matlab 中想在一定分布的数据中随机采样N个数据,怎么做呢

比如我想构造服从某一分布(如高斯分布,不要均匀分布)的数据,这个怎么搞,然后再在这个数据里随机抽取n个不重复的数,怎么编程呢

一、Matlab在一个集合中随机取数:function 'randperm'

for example:

a=[1 2 3 4 5 6 7 8 9 10];
b=a(randperm(length(a)));
x=b(1:5);

matlab生成随机数据

matlab本身提供很多的函数来生成各种各样的随机数据:

normrnd 可以生成一定均值和标准差的正态分布

gamrnd 可以生成gamma分布的伪随机数矩阵

chi2rnd 可以生成卡方分布的伪随机数矩阵

trnd 可以生成t分布的伪随机数矩阵

frnd 可以生成f分布的伪随机数矩阵

raylrnd 可以生成rayleigh分布的伪随机数矩阵

关于具体的函数语法,你可以在matlab中用help命令得到更详细的说明。

我要说的是,这些生成的伪随机矩阵的标准差,均值等都是和你给的具体数据很接近的,但是,不是一样啊。也就是说matlab生成的伪随机矩阵不是一定准确的,只能是很接近的。另外,要明白什么是伪随机数。

随机数的生成通常有两种方法:一是依赖一些专用的电子元件发出随机信号,这种方法又称为物理生成法。另一类就是通过数学的算法,仿照随机数发生的规律计算出随机数,由于产生的随机数是有数学公式计算出来的,所以这类随机数又称为伪随机数。

你也可以让matlab生成一个随机的正态分布矩阵,然后用normstat来求得生成矩阵的真实方差和矩阵。其实matlab中求均值和方差的函数都是以*stat结尾的。比如上面的求正态分布的normstat,求gam分布的均值和方差的gamstat,求rayleigh分布的均值和方差的raylstat等。同样的,还有以*pdf结尾的都是函数的概率密度,以*cdf结尾的函数是分布函数,以inv结尾的函数为逆分布函数求解函数。比如,正态分布的概率密度normpdf,正态分布的分布函数normcdf,正态分布的逆分布函数求解函数为norminv。同样道理的还有possion分布,gamma分布,卡方分布,T分布,F分布,rayleigh分布等,加上后缀都是相应的概率密度函数,分布函数。

二、统计编程:

此文纯粹是转贴
第4章 概率统计
本章介绍MATLAB在概率统计中的若干命令和使用格式,这些命令存放于MatlabR12\Toolbox\Stats中.
4.1 随机数的产生
4.1.1 二项分布的随机数据的产生
命令 参数为N,P的二项随机数据
函数 binornd
格式 R = binornd(N,P)
%N,P为二项分布的两个参数,返回服从参数为N,P的二项分布的随机数,N,P大小相同.
R =
binornd(N,P,m) %m指定随机数的个数,与R同维数.
R = binornd(N,P,m,n)
%m,n分别表示R的行数和列数
例4-1
>>
R=binornd(10,0.5)
R =
3
>> R=binornd(10,0.5,1,6)
R =
8 1 3 7 6 4
>>
R=binornd(10,0.5,[1,10])
R =
6 8
4 6 7 5 3 5 6 2
>>
R=binornd(10,0.5,[2,3])
R =
7 5
8
6 5 6
>>n =
10:10:60;
>>r1 = binornd(n,1./n)
r1 =
2 1 0 1 1 2
>>r2 = binornd(n,1./n,[1 6])
r2
=
0 1 2 1 3 1
4.1.2
正态分布的随机数据的产生
命令 参数为μ,σ的正态分布的随机数据
函数 normrnd
格式 R = normrnd(MU,SIGMA)
%返回均值为MU,标准差为SIGMA的正态分布的随机数据,R可以是向量或矩阵.
R =
normrnd(MU,SIGMA,m) %m指定随机数的个数,与R同维数.
R =
normrnd(MU,SIGMA,m,n) %m,n分别表示R的行数和列数
例4-2
>>n1 =
normrnd(1:6,1./(1:6))
n1 =
2.1650 2.3134 3.0250 4.0879 4.8607 6.2827
>>n2 = normrnd(0,1,[1 5])
n2
=
0.0591 1.7971 0.2641 0.8717 -1.4462
>>n3 = normrnd([1 2 3;4 5 6],0.1,2,3) %mu为均值矩阵
n3 =
0.9299 1.9361 2.9640
4.1246 5.0577 5.9864
>>
R=normrnd(10,0.5,[2,3]) %mu为10,sigma为0.5的2行3列个正态随机数
R
=
9.7837 10.0627 9.4268
9.1672
10.1438 10.5955
4.1.3 常见分布的随机数产生
常见分布的随机数的使用格式与上面相同
表4-1 随机数产生函数表
函数名
调用形式


Unifrnd
unifrnd (
A,B,m,n)
[A,B]上均匀分布(连续) 随机数
Unidrnd
unidrnd(N,m,n)
均匀分布(离散)随机数
Exprnd
exprnd(Lambda,m,n)
参数为Lambda的指数分布随机数
Normrnd
normrnd(MU,SIGMA,m,n)
参数为MU,SIGMA的正态分布随机数
chi2rnd
chi2rnd(N,m,n)
自由度为N的卡方分布随机数
Trnd
trnd(N,m,n)
自由度为N的t分布随机数
Frnd
frnd(N1, N2,m,n)
第一自由度为N1,第二自由度为N2的F分布随机数
gamrnd
gamrnd(A, B,m,n)
参数为A, B的分布随机数
betarnd
betarnd(A, B,m,n)
参数为A, B的分布随机数
lognrnd
lognrnd(MU, SIGMA,m,n)
参数为MU,
SIGMA的对数正态分布随机数
nbinrnd
nbinrnd(R, P,m,n)
参数为R,P的负二项式分布随机数
ncfrnd
ncfrnd(N1, N2, delta,m,n)
参数为N1,N2,delta的非中心F分布随机数
nctrnd
nctrnd(N, delta,m,n)
参数为N,delta的非中心t分布随机数
ncx2rnd
ncx2rnd(N, delta,m,n)
参数为N,delta的非中心卡方分布随机数
raylrnd
raylrnd(B,m,n)
参数为B的瑞利分布随机数
weibrnd
weibrnd(A, B,m,n)
参数为A, B的韦伯分布随机数
binornd
binornd(N,P,m,n)
参数为N, p的二项分布随机数
geornd
geornd(P,m,n)
参数为
p的几何分布随机数
hygernd
hygernd(M,K,N,m,n)
参数为
M,K,N的超几何分布随机数
Poissrnd
poissrnd(Lambda,m,n)
参数为Lambda的泊松分布随机数
4.1.4
通用函数求各分布的随机数据
命令 求指定分布的随机数
函数
random
格式 y = random('name',A1,A2,A3,m,n)
%name的取值见表4-2;A1,A2,A3为分布的参数;m,n指定随机数的行和列
4.2
随机变量的概率密度计算
4.2.1 通用函数计算概率密度函数值
命令 通用函数计算概率密度函数值
函数 pdf
格式 Y=pdf(name,K,A)
Y=pdf(name,K,A,B)
Y=pdf(name,K,A,B,C)
说明返回在X=K处,参数为A,B,C的概率密度值,对于不同的分布,参数个数是不同;name为分布函数名,其取值如表4-2.
表4-2 常见分布函数表
name的取值
函数说明
'beta'

'Beta'
Beta分布
'bino'

'Binomial'
二项分布
'chi2'

'Chisquare'
卡方分布
'exp'

'Exponential'
指数分布
'f'

'F'
F分布
'gam'

'Gamma'
GAMMA分布
'geo'

'Geometric'
几何分布
'hyge'

'Hypergeometric'
超几何分布
'logn'

'Lognormal'
对数正态分布
'nbin'

'Negative Binomial'
负二项式分布
'ncf'

'Noncentral F'
非中心F分布
'nct'

'Noncentral t'
非中心t分布
'ncx2'

'Noncentral Chi-square'
非中心卡方分布
'norm'

'Normal'
正态分布
'poiss'

'Poisson'
泊松分布
'rayl'

'Rayleigh'
瑞利分布
't'

'T'
T分布
'unif'

'Uniform'
均匀分布
'unid'

'Discrete Uniform'
离散均匀分布
'weib'

'Weibull'
Weibull分布
4.2.2 专用函数计算概率密度函数值
命令 二项分布的概率值
函数 binopdf
格式 binopdf (k, n, p) %等同于, p —
每次试验事件A发生的概率;K—事件A发生K次;n—试验总次数
命令
泊松分布的概率值
函数 poisspdf
格式
poisspdf(k, Lambda) %等同于
命令 正态分布的概率值
函数 normpdf(K,mu,sigma) %计算参数为μ=mu,σ=sigma的正态分布密度函数在K处的值
专用函数计算概率密度函数列表如表4-3.

admin 2007-11-29 20:43
表4-3
专用函数计算概率密度函数表
函数名
调用形式
注 释
Unifpdf
unifpdf (x, a, b)
[a,b]上均匀分布(连续)概率密度在X=x处的函数值
unidpdf
Unidpdf(x,n)
均匀分布(离散)概率密度函数值
Exppdf
exppdf(x, Lambda)
参数为Lambda的指数分布概率密度函数值
normpdf
normpdf(x, mu, sigma)
参数为mu,sigma的正态分布概率密度函数值
chi2pdf
chi2pdf(x, n)
自由度为n的卡方分布概率密度函数值
Tpdf
tpdf(x, n)
自由度为n的t分布概率密度函数值
Fpdf
fpdf(x, n1, n2)
第一自由度为n1,第二自由度为n2的F分布概率密度函数值
gampdf
gampdf(x, a, b)
参数为a, b的分布概率密度函数值
betapdf
betapdf(x, a, b)
参数为a,
b的分布概率密度函数值
lognpdf
lognpdf(x,
mu, sigma)
参数为mu, sigma的对数正态分布概率密度函数值
nbinpdf
nbinpdf(x, R, P)
参数为R,P的负二项式分布概率密度函数值
Ncfpdf
ncfpdf(x, n1, n2, delta)
参数为n1,n2,delta的非中心F分布概率密度函数值
Nctpdf
nctpdf(x, n, delta)
参数为n,delta的非中心t分布概率密度函数值
ncx2pdf
ncx2pdf(x, n, delta)
参数为n,delta的非中心卡方分布概率密度函数值
raylpdf
raylpdf(x, b)
参数为b的瑞利分布概率密度函数值
weibpdf
weibpdf(x, a, b)
参数为a,
b的韦伯分布概率密度函数值
binopdf
binopdf(x,n,p)
参数为n,
p的二项分布的概率密度函数值
geopdf
geopdf(x,p)
参数为 p的几何分布的概率密度函数值
hygepdf
hygepdf(x,M,K,N)
参数为 M,K,N的超几何分布的概率密度函数值
poisspdf
poisspdf(x,Lambda)
参数为Lambda的泊松分布的概率密度函数值
4.2.3
常见分布的密度函数作图

>>x = 0:10;
>>y = binopdf(x,10,0.5);
>>plot(x,y,'+')
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-30
p=normrnd(1,2,1,30000);%构造一个均值为1,标准差为2的30000个正态分布随机数
i=round(30000*rand(1,300));a=p(i);%从中随即取300个,这里不能保证不重复
第2个回答  2011-09-30
可利用现成 函数构造高斯分布(或其他分布)
randn(m,n,p,...):生成阶数m×n×p×…… 的、元素服从高斯分布的多维随机阵列。显然,当仅为m阶时,即生成m×m阶的方阵。其中m、n、p等须是标量。本回答被提问者采纳
第3个回答  2015-09-12
% 假设数据总共有M个, 数组名为Arr.

RAND = randperm( 1:M ); % M 个数随机排列

GET = Arr( RAND(1:N) ); % 取前 N 个排列

matlab 中想在一定分布的数据中随机采样N个数据,怎么做呢
chi2rnd 可以生成卡方分布的伪随机数矩阵trnd 可以生成t分布的伪随机数矩阵frnd 可以生成f分布的伪随机数矩阵raylrnd 可以生成rayleigh分布的伪随机数矩阵关于具体的函数语法,你可以在matlab中用help命令得到更详细的说明。我要说的是,这些生成的伪随机矩阵的标准差,均值等都是和你给的具体数据很接近的,但是,不是一...

matlab中选取一组数据中随机的连续n个数据的命令代码是什么,本人菜鸟...
index = randi([1 length(p)-2],1); %从中随机生成一个序号index p(index:index+2) %读取从index开始的3个数

怎么将有一定概率的数据用MATLAB随机输出
(1) R = normrnd(0,1,[1 5]) 生成 5 个正态(0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为[1,2,3;4,5,6], 方差为 0.1 的 2× 3 个正态随机数.四.二项随机数:类似地有 R = binornd(N,P) R = binornd(N,P,m) R = ...

如何用matlab在大量数据中抽取部分数据?
首先,确保你的数据存储在变量'a'中。假设你希望从这些数据中随机选取固定数量的N个元素。利用Matlab中的'randperm'函数,可以轻松实现这一目标。这个函数生成一个随机排列的索引。具体操作如下:调用'randperm(numel(a))',其中'numel(a)'返回变量'a'中元素的总数。这将为你提供一个从1到'a'元素总...

...用MATLAB生成依概率服从多个均匀分布的随机数?比如已知一组数据,
rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) 另外: Matlab随机数生成函数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 ...

MATLAB中,怎样把一组给定的数据随机排列?
可以参考下面的代码:X=X(randperm(numel(x)))numel(x)获得变量长度 randperm(n)产生长度为n的随机数列 如:randperm(4)ans= 3 2 1 4 X(...) 取得X中相应元素产生新数列

matlab 哪个函数可以从一组数据中随机抽取一部分出来
matlab里有现成的函数 datasample, 调用方法:y = datasample(data,k,dim)例子:data=randn(10,200); % 生成尺寸为10*200的数据 y = datasample(data,5,1); %从data中随机抽取5行数据 --- 参考:网页链接

...在matlab中,要在m组列向量中随机取n组列向量怎么实现?
function s = sampling(R, n)选择抽样,R为记录集合,n为抽取的样本数 算法参考:D. E. Knuth, TAOCP, vol.2, pp142,稍有改动 开发时测试数据 if ~nargin R = 1 : 8;n = 4;end N = length(R);t = 0; % 处理过的记录总数 m = 0; % 已选得的记录数 while 1 U =...

Matlab如何从一组数据中无重复的随机选取几个数
1、首先知道matlab中删除矩阵重复数据,可以用到unique函数,数组的唯一值,在命令行窗口下help unique,可以看到函数的具体用法。2、在命令行窗口中新建一个a=[1 3 4 5 6 6 7 8 9 8]矩阵,里面有重复数据6,8。3、输入unique(a),按回车键,可以看到a矩阵重复数据全部删除了,矩阵元素全部都是...

MATLAB中,怎样把一组给定的数据随机排列?
在MATLAB中,想要随机排列一组给定的数据,非常简单,只需借助内置的randperm()函数就能轻松实现。以下是一个详细的示例:首先,假设你有一个试验矩阵A,例如A=[7,6,3,9,10],这些数字是你想要随机排列的数据。接下来,调用randperm()函数,比如randIndex_A=randperm(5),这将生成一个1到5的随机...

相似回答