Matlab 的randperm和randsample函数

3 概率分布与随机函数 随着计算机技术的快速发展,随机数在越来越多的领域得到了广泛应用,例如信息安全,网络游戏,计算机仿真和模拟计算,这一章将介绍常用的概率分布及概率计算、利用MATLAB生成随机数。  1.概率分布及概率计算    1.1 概率分布的定义    设X为一随机变量,对任意实数x,定义          F(x)=P(X    为X的分布函数。根据随机变量取值的特定,随机变量分为离散型和连续型两种 阅读详情

Matlab中的randperm和randsample函数用法对比

构建替代数据的时候,一种常见的思路是打乱原数据的排列次序,通过随机置换原数据的排列次序从而产生和原数据系列统计特征(如均值、方差、分布)一致的随机数据。具体到Matlab中,此思路的实现会涉及到两个命令:randperm和randsample


p.s. 相关的重新排序命令还包括:

1
2
3
4
5
6
7
8
9
Reordering Algorithms
amd           Approximate minimum degree permutation
colamd        Column approximate minimum degree permutation
colperm       Sparse column permutation based on nonzero count
dmperm        Dulmage-Mendelsohn decomposition
ldl           Block LDL' factorization for Hermitian indefinite matrices
randperm      Random permutation
symamd        Symmetric approximate minimum degree permutation
symrcm        Sparse reverse Cuthill-McKee ordering


1、RANDPERM


根据Matlab文档,randperm最常用的用法是是返回一个从1-n的包含n个数的随机排列(每个数字只出现一次)——以行向量的形式

1
p = randperm(n) returns a row vector containing a random permutation of the integers from 1 to n inclusive

如果希望从1-n的数字序列里面随机返回k个数,则可以使用

1
p = randperm(n,k)

其中,这k个数之间彼此也是不相同的。可见,randperm能够产生不重复的随机排列,结合原数据,可写成类似下面的形式:

1
new = old( randperm(  size(old,1)  ) , : );

这样新数组中的各行就被重排了。如果各列也需要重排,则可以嵌套使用。

Matlab文档中还说,randperm完成的是不重复的重排采样(k-permutations),如果结果中的数需要重复多次出现的情况,则可以用:

1
randi(n,1,k)

randperm和rand、randi、randn一样,其随机数的生成是收到rng命令控制的,因此,可通过该命令影响随机数据流rand stream的情况。


2、RANDSAMPLE


randsample的命令组合比randperm要复杂,事实上这个命令内部也有对randperm的调用。因此,在适当的情况下,使用randperm的速度理论上比randsample快。(事实上也快很多)

randsample的命令格式:

1
2
3
4
5
6
7
y = randsample(n,k)
y = randsample(population,k)
y = randsample(n,k,replacement)
y = randsample(population,k,replacement)
y = randsample(n,k,true,w)
y = randsample(population,k,true,w)
y = randsample(s,...)

第一种情形,randsample(n,k)和randperm(n,k)的功能一样,都是产生k个不相同的数(1-n)。

第二种情形,randsample(ARRAY,k),事实上就是randperm和原数组结合使用的形式,从ARRAY数组里面随机取出k个不相同的数。

第三种情形,replacement是一个bool变量,为1的时候,取出的数可能是重复的,为0的时候,可能不重复。


很显然,看到这里,会发现randsample和randperm很相似,譬如,之前旧数组随机排序的需求可写成下面的样式:

1
2
3
new = old( randsample( 1:length(matrix) , length(matrix) ,0),: );
or
new = randsample( old, length(old), 0 );   <-- I preferred this.

事实上更有用的是第四种情形,多出来一个w,是权重系数,能够根据此权重系数在原数组(或1-n数组)里面选出可能重复的k个数。典型用法譬如:

1
R = randsample('ACGT',48,true,[0.15 0.35 0.35 0.15])

上面的语句能够产生48个内容为ATCG的随机字串,且A出现的权重为0.15,其余类推。这个显然在生物信息学中很有用。ATCG也就是DNA的碱基序列。

第五种情形,可以用自己提供的随机数stream替换系统默认的随机数,s必须派生自Matlab的RandStream类。


小结


通过对比,我们很容易的发现randperm比randsample更直接更底层,而randsample则是对各种使用的情形进行了封装。randsample最有用的优势是可以很方便的实现随机数的权重分布。

MATLAB抽样函数进化论:从randperm到datasample的技术迭代史 本文深入探讨了MATLAB抽样函数从randperm到datasample的技术演进历程,重点分析了随机抽样、矩阵操作等核心功能的迭代优化。通过对比randperm、randsample和datasample的特性差异,揭示了MATLAB在数据科学领域的技术突破,为开发者提供了高效的抽样解决方案。 阅读详情

相关推荐

matlab 数组语法

disp(datestr(now))      // 输出此刻的时间 all(): B = all(A)                   // 如果A是一个向量:当A中元素都不为零时,返回1;否则,返回0;                                          // 如果A是一个矩阵:则返回一个行向量,对每一列进行上面规则。 B = [A,dim]       ...

feiyuxiucun的博客 1042

Matlab基础入门(一)

Java程序员,读研需要肝论文,刚开始学算法,需要用到Matlib进行仿真,但是没有学过matlib相关知识,特此来记录一下经常用到的一些函数!!

袁的博客 2151

SLAM轨迹评估神器evo实战:从GPS到TUM格式的完整转换指南(附Python代码)

本文详细介绍了如何使用evo工具将GPS数据转换为TUM格式,以便进行SLAM轨迹评估。通过Python代码实现GPS到笛卡尔坐标的精确转换,并提供了完整的处理流程和实战案例,帮助开发者轻松完成从原始GPS数据到精确轨迹评估的全过程。特别适用于ORB-SLAM等视觉SLAM算法的性能验证。

weixin_29074295的博客 292

MATLAB知识点:randsample函数(★★★☆☆)生成随机样本的函数,可指定有放回和无放回随机抽样

rand取自单词random,翻译成中文表示随机;单词sample翻译成中文表示样本,因此根据字面意思理解randsample函数用于生成随机样本,它是randperm函数的进阶版本,该函数需要统计和机器学习工具箱Statistics and Machine Learning Toolbox。

数学建模学习交流的博客 4693

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5976

Boost电路双闭环控制MATLAB仿真

通过电流内环控制,我们可以改变目标平均电流基准值的大小来闭环改变占空比,再改变输出电压与电路电流,直到电路电流达到基准电流才达到稳态。但是我们的基准电流依旧是外部提供的,下边的电压外环控制就是电路自己计算基准电流。

Fourglsl的博客 5845

matlab函数讲解——randsample

在MATLAB中,randsample函数用于从一个给定的集合中随机选择样本。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 1262

【8】mctp & pldm

异步会check seq,保证不丢包,虽然发一条req,不用等,但是不能发下一条req,等上条response回来后才能发下一条。TO(tag owner)=1是request,TO=0是response,但是异步通信response由0改为1。如下还有kcs,i3c,serial等。

持续更新ing... 1080

Matlab中的随即置乱函数randperm和randsample函数用法对比

Matlab中的randperm和randsample函数用法对比 转载:http://blog.sina.com.cn/s/blog_a4034b280101k4gg.html 构建替代数据的时候,一种常见的思路是打乱原数据的排列次序,通过随机置换原数据的排列次序从而产生和原数据系列统计特征(如均值、方差、分布)一致的随机数据。具体到Matlab中,此思路的实现会涉及到两个命令:...

weixin_30496431的博客 1482

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 436

深入解析:使用Python进行T矩阵散射计算的完整指南

在物理学和工程学中,散射是一个至关重要的概念。当波(无论是光波、声波还是其他类型的波)遇到一个障碍物时,它会在多个方向上散开。为了理解和预测这种行为,我们需要进行数学建模和计算。其中,T矩阵方法是一种非常有效的工具。在开始计算之前,我们需要定义一些基础函数。"""计算T矩阵的一个元素。参数:- wave_vector: 波矢- scatterer_position: 散射体的位置- scatterer_properties: 散射体的性质(如大小、形状等)返回:- T矩阵的一个元素。

qq_38334677的博客 1052

matlab randomsample,randperm和randsample函数用法对比

构建替代数据的时候,一种常见的思路是打乱原数据的排列次序,通过随机置换原数据的排列次序从而产生和原数据系列统计特征(如均值、方差、分布)一致的随机数据。具体到Matlab中,此思路的实现会涉及到两个命令:randperm和randsamplep.s.相关的重新排序命令还包括:123456789ReorderingAlgorithmsamdApproximateminimumdegree...

weixin_39948309的博客 830

9.9华为OD机试真题 新系统 - 受限任务分配 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【受限任务分配】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【受限任务分配】多语言题解。

qq_45776114的博客 725

Matlab中的randperm和randsample函数用法总结

构建替代数据的时候,一种常见的思路是打乱原数据的排列次序,通过随机置换原数据的排列次序从而产生和原数据系列统计特征(如均值、方差、分布)一致的随机数据。具体到Matlab中,此思路的实现会涉及到两个命令:randperm和randsamplep.s. 相关的重新排序命令还包括:amd Approximate minimum degree permutation colamd

竭尽全力的专栏 3万+

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

matlab randomsample,Matlab中的随即置乱函数randperm和randsample函数用法对比

构建替代数据的时候,一种常见的思路是打乱原数据的排列次序,通过随机置换原数据的排列次序从而产生和原数据系列统计特征(如均值、方差、分布)一致的随机数据。具体到Matlab中,此思路的实现会涉及到两个命令:randperm和randsamplep.s.相关的重新排序命令还包括:123456789ReorderingAlgorithmsamdApproximateminimumdegree...

weixin_31887307的博客 999

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

matlab的randperm和randsample

参考链接:https://blog.youkuaiyun.com/jiejinquanil/article/details/50057045 一、randperm randperm能够产生不重复的随机排列 用法:randperm(n,k)  可以产生0-n之间的k个随机整数 randperm完成的是不重复的重排采样(k-permutations),如果结果中的数需要重复多次出现的情况,则可以用:ran...

温故而知新 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MATLAB对数据集进行无放回随机抽样

MATLAB中随机抽样函数有randperm,randsample和datasample。其中前两个函数在某范围内生成随机数样本,datasample则可以对某数组中的数值进行抽样。

ViewSpecPro的博客 1290

matlab 判断两个矩阵有元素相等_初学matlab中的小小心得

将matlab中学到的代码知识心得汇总汇总,供自己以后复习学习用,温故而知新!首先开始量的积累,然后再去总结归纳!(一)randperm函数、randsample函数(1)randperm:random permutation,随机排列的意思。randperm(n) 将1至n的序列打乱随机排列。如:>>randperm(5)ans = 5 3 4 1 2 randperm(m,n) ...

weixin_35780601的博客 2505

Matlab函数备忘2

1.sort(),sortrows()#matlab codesort(A) 默认升序,列优先 sort(A,'descend') 降序 sort(A,1) 对每一列中的元素升序排列 sort(A,2) 对每一行中的元素升序排列 [A_sort,idx] = sort(A) A_sort表示排序后的结果,idx表示A_sort元素在A中的位置索引

微风❤水墨 960

MATLAB 常用函数

MATLABA常用函数

qq_42731062的博客 4082

Matlab关于视觉问题中的一些自有API

【randsample/randperm】   y = randsample(n,k);从1:n中随机抽取k个数。   y= randperm(n)或者y= randperm(n,k) 【rectint】   out = rectint(A, B);返回A,B指定矩形的相交面积,其中A可以是M*4,B可以是N*4的 转载于:https://www.cnblogs.com/qq55...

weixin_30649859的博客 86

2021-06-23

MATLAB随机数生成 RandSample(list,dims)从序列list中返回一个随机样本,如果指定第二个参数dims,则返回指定维度的数组, RandSample(-15:15), ans= -14 RandSample(1:100,[3,3]) ans = 81 92 66 15 90 4 43 96 85 2,函数Shuffle对一维向量与randperm()效果一致 3, randi([imin,imax],n,m) 返回n行m列的,介于[imin,imax]区间内的随机整数

weixin_44347606的博客 72

Matlab随机数生成全解析:从rand到蒙特卡洛模拟实战

随机数生成是数值计算和科学仿真的基础技术,其核心原理是通过确定性算法产生统计特性符合特定分布的伪随机序列。在工程实践中,随机数不仅是模拟不确定性的关键工具,更是蒙特卡洛方法、统计抽样和算法初始化的技术基石。掌握均匀分布、正态分布等不同随机数生成方法,能够有效支撑金融建模、机器学习权重初始化和高性能计算等应用场景。本文以Matlab的rand、randn、randi函数族为例,深入解析种子控制与可复现性机制,并结合向量化优化和并行计算技巧,帮助读者构建可靠的随机数工程实践体系。

weixin_33738578的博客 482

MATLAB随机数:重启后结果一样解决方法

最近在matlab中使用了自带的随机函数randsample,但是发现最终的结果竟然不是随机的,每次结果都一样,后来发现Rand函数产生的随机数并不是真的现场算出来的,而是从一个随机数序列中取出来的。换句话说,第一次启动Matlab调用的第n次Rand函数与下一次启动调用的第n个Rand函数产生相同的数值。 为了使得每次结果不同,可以在rand函数(rand、randi、randsa

冷江 3909

matlab函数用法积累

randn(n)                        生成n×n的满足标准正态分布的随机数 randn(m,n)                    生成m×n的满足标准正态分布的随机数 R = normrnd(MU,SIGMA)         %返回均值为MU,标准差为SIGMA的正态分布的随机数据,R可以是向量或矩阵. R = normrnd(MU,SIGMA,m)

sdujava2011 1125
上一篇: 关于Matlab exe文件无法运行问题
下一篇: word2010中如何删除空白页
pluto21
博客等级 码龄12年 306粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值