本文目录
- 求助Matlab的randn和normrnd的区别
- 用matlab求正态,高斯分布的函数值
- matlab的normrnd对应于python的哪个函数
- Matlab中的normrnd语句产生的是伪随机数吗
- matlab如何产生正态分布数据
- Matlab中符号变量在normrnd函数使用时,提示第二个输入标量或者唯一的符号变量
- 如何matlab取正态分布随机数
- 用normrnd函数,求得随机数组,怎样可以在matlab中自动读取excel中的数据,得到多组数据的随机数组
- 生成高斯分布的函数mvnrnd与normrnd有什么区别
- Matlab不确定度验证及非线性拟合的问题
求助Matlab的randn和normrnd的区别
当然是有区别的。
正态分布只需要2个参数。
randn() 是标准正态分布
normrnd是自己可以指定均数和标准差的正太分布。
用matlab求正态,高斯分布的函数值
可以利用matlab自带的函数mvnpdf,计算多维正态分布概率密度
具体的调用格式为
y = mvnpdf(X,MU,SIGMA)
其中X是输入的向量
MU是平均值
SIGMA是多维正态分布的协方差矩阵
返回的y即使向量X在MU和SIGMA确定的多维正态分布下的概率密度值
以你需要的4维分布为例
输入的MU应该是1x4的矩阵,例如 MU=[1,2,3,4];
四个维度的均值,这就是中心点在 (1,2,3,4)位置;
而SIGMA应该是4x4的协方差矩阵,其对角线上4个元素是分布在四维的方差
而非对角线元素是协方差,表示不同维度分布之间的相关性
如果不同维度之间的分布是互不相关的,或者说是正交的,那么非对角线元素都为0
那么SIGMA也可以简化为1x4的矩阵
而输入X则可以是nx4的矩阵,其中每一行代表一个向量
这时候返回y是nx1的矩阵,对应X中每一行向量的到的概率密度值
例如:
》》 X=[0,0,0,0];MU=[1,2,3,4];SIGMA=[1,1,1,1];
》》 y = mvnpdf(X,MU,SIGMA)
y = 7.7486e-09
计算(0,0,0,0)这点在四维均值为(1,2,3,4),四维方差都是1的正态分布中的概率密度
结果是7.7486e-09
matlab的normrnd对应于python的哪个函数
numpy《pre t=“code“ l=“python“》from numpy.matlib import repmat
此外numpy中的array类型存在Broadcasting机制。A(5,6), B是A每行的均值,B(5,1)对A进行行0均值化时,无需基于B构造一个5*6矩阵,直接A-B即可。
Matlab中的normrnd语句产生的是伪随机数吗
是随机数。
R=normrnd(MU,SIGMA):产生服从正态分布的随机数(MU参数代表均值,DELTA参数代表标准差)。输入向量或矩阵和必须是相同的形式,输出R必须是相同的形式。标量输入将扩展到与其他输入具有相同维数的矩阵。
R=norrmrnd(MU,SIGMA,m):生成具有正态分布的随机数矩阵(MU参数表示均值,DELTA参数表示标准差)矩阵的形式由m定义,m为1×向量,其中两个元素表示返回值R中行和列的维数。
扩展资料:
示例:生成正态分布随机数。
》 》 a =正常(0,1)
一个=
1.4814
》 》 a =正常(0,1,1,6)
一个=
1.1287-0.29001.26160.47541.17410.1269
》 》 a =正常(0,1,1)
一个=
0.15550.8186-0.2926-0.5408-0.3086-1.0966
》 》 a =正常(10,2,2,3)
一个=
13.628013.609011.0531
10.62408.55389.4795
M=50;
N=2;
X=0:1:100;
Y=exp(-(x-m)^2/(2*n^2));
次要情节(2,1,1)
情节(x,y)
次要情节(2,1,2)
%z=正常(50,2,100,1);
%地块(z)
Z=0:1:100;
D=normpdf(z,50,2);
图(z,d)
等价的表达式
matlab如何产生正态分布数据
直接输入这个试试,round(normrnd(80,5,n))
命令 参数为μ,σ的正态分布的随机数据
函数 normrnd
格式 :
R = normrnd(MU,SIGMA) %返回均值为MU,标准差为SIGMA的正态分布的随机数据,R可以是向量或矩阵.
R = normrnd(MU,SIGMA,m) %m指定随机数的个数,与R同维数.
R = normrnd(MU,SIGMA,m,n) %m,n分别表示R的行数和列数
注意:在MATLAB中产生正态分布的参数分别为均值和标准差.在仿真的时候很容易将标准差用方差代替,造成仿真结果数据与期望的差别较大。因为自己吃了这个亏,所以在这里特别说明。一方面提醒自己不要犯类似的错误,也给其他人一个提醒.
例:
》》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
Matlab中符号变量在normrnd函数使用时,提示第二个输入标量或者唯一的符号变量
normrnd是用于生成数值类型随机数的,不能用于符号(sym)类型。
该函数会对输入参数进行合法性检查,里面有类似下面的语句:
sigma(sigma 《 0) = NaN;
这句在不同版本中会导致不同的错误,稍早一些的版本会提示“Undefined function or method ’lt’ for input arguments of type ’sym’”,也就是说符号变量不能进行关系运算;后来的版本会出现类似你现在贴出来的错误。
如果你想要生成符号类型的正态分布随机数,可以用类似 randn(3,4)*sigma+mu 的式子直接生成,其中sigma和mu为标准差和均值(可以是符号类型),randn函数可以指定需要的矩阵维数。
如何matlab取正态分布随机数
运用normrnd函数。
1. R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,SIGMA参数代表标准差)的随机数。输入的向量或矩阵MU和SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。
2. R=normrnd(MU,SIGMA,m,n): 生成m×n形式的正态分布的随机数矩阵。
实例:生成均值为0,标准差为1的2*2正态分布随机矩阵。
拓展说明:
matlab中还有个函数randn,可以产生均值为0,方差σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵。
Y = randn(n)返回一个n*n的随机项的矩阵;
Y = randn(m,n) 或 Y = randn([m n]):返回一个m*n的随机项矩阵。
用normrnd函数,求得随机数组,怎样可以在matlab中自动读取excel中的数据,得到多组数据的随机数组
这个函数生成均值为1.2,方差为5.76的随机数,矩阵大小为100行200列。所谓随机数,要服从那个分布当然就会有小于0的情况发生了。
要不小于0,不然就用
A=abs(normrnd(1.2,5.76,100,200)); 但是这样就改变了数据的统计特性了,均值和方差就变了~~
生成高斯分布的函数mvnrnd与normrnd有什么区别
命令 参数为μ,σ的正态分布的随机数据
函数 normrnd
格式 :
R = normrnd(MU,SIGMA) %返回均值为MU,标准差为SIGMA的正态分布的随机数据,R可以是向量或矩阵.
R = normrnd(MU,SIGMA,m) %m指定随机数的个数,与R同维数.
R = normrnd(MU,SIGMA,m,n) %m,n分别表示R的行数和列数
Matlab不确定度验证及非线性拟合的问题
x=;
for i=1:10
x=[x;(i:10:10000)];%产生从i开始,步长为10,的自然数,最大值为10000。即得到关于x的10×1000的矩阵
end
y=x./(0.1152+0.0845*x);%得到矩阵y
hold on;
y1=normrnd(y,y*0.2,10,1000);%生成以y为均值,标准差为y*0.2的呈高斯分布的10×1000随机数矩阵
plot(x,y1,’ .g’) %描散点
plot(x,y,’b*’);%描y点
ys=;
for i=1:10
%%%%我怀疑是这中间有问题%%%%%%%
b=polyfit(x(i,:),y1(i,:),4);%拟合曲线参数,使用多项式拟合函数]
ys=[ys;polyval(b,x(i,:))];%求解拟合y值
%%%%%%%%%%%%%%%%%%%%%
end
plot(x,ys,’-r’);%画出每一条拟合曲线
hold on;
for i=1:10
%以下为验证通过拟合曲线得到的y值得离散度确实是0.2
p1=ys(i,:)-y(i,:);
p1=p1.^2;
s=sqrt(sum(p1)/1000);
smx(i,:)=s;%得到一组离散度的矩阵,如果结论正确,矩阵用元素应在0.2上下浮动
end
smx
首先你生成的矩阵是1*1000的,我改了下,现在是10*1000的了
其次normrnd函数的参数你理解有误,第二个参数是标准差,是变化的数值,不是比例
现在这个运行出来每次都不一样,有的离散度只有0.11左右,大部分是0.2左右的;
由于生成的y最后基本都等于11多了,所以前几组含显著小于11的数的离散值就偏大,而后面几组基本从头到尾都等于11多,就容易偏小。
b=polyfit(x(i,:),y1(i,:),6); %这里拟合的阶数越高,拟合曲线越弯来拐去的贴合数据值,就会增大拟合出来数值的离散度。