在MATLAB上获得一组正态分布数据很容易,常利用:
1.normrnd函数——例:R=normrnd(μ,σ) 从具有均值参数 μ 和标准偏差参数 σ 的正态分布生成随机数
2.randn函数——例:R=randn 返回一个从标准正态分布中得到的随机标量。
(以上两种函数的用法很多,详细的可以去MATLAB “help”中获取。)
(想获得具体多少个数据,在上述函数后加一些数字便可。具体用法看“help”。)
但是上述的函数只能获得如下左图所示范围(阴影)内的数据,而右图中的范围(阴影)却不行。


下面我给大家举个例子,就应该知道如何获取类似右图中的数据了。(以下是matlab程序)
clc
clear
n=1000; %想要获得1000个某正态分布的某个范围里的数据
a={};%建立一个空元胞数组
j=0;%用于计数
while j<n %直到j=1000时,循环便停止
x=0.9+sqrt(1/100).*randn; %产生一个符合“均值为0.9,方差为1/100的正态分布”的随机数
if x<=1&&x>=0.4 %只取0.4~1之间的“正态数”
a{end+1}=x; %如果x符合要求,就把x丢进a元胞数组
j=j+1; %相当于:丢进一个x,就加一分哈哈哈
end
end
y=cell2mat(a); %将元胞数组转化为矩阵
figure(1)
plot(y) %画图,看是否符合要求得出的结果是:(每执行一次程序,出现的结果是不同的)

把程序看懂的话,自己做就应该没问题了。关键的地方就是元胞数组与while循环。
这个问题我之前琢磨了很久,终于搞定后也算是和大家分享一下。
有什么疑惑可以随时评论、私信。
版权声明:本文为wsy_tony原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。