2014-09-27 738 views
0

我是新来的matlab编程,我应该编写一个脚本来生成一个大小为N的随机序列(x1,...,XN),遵循正态分布N( 0,1),并计算经验均值MN和方差σN^ 2 然后,我要画出他们:matlab中的经验均值和方差图,正态分布

这是我essai:

function f = normal_distribution(n) 
x =randn(n); 
muem = 1./n .* (sum(x)); 
muem 
%mean(muem) 
vaem = 1./n .* (sum((x).^2)); 
vaem 
hold on 
plot(x,muem,'-') 
grid on 
plot(x,vaem,'*') 

注意:这些都是我用了formules:

enter image description here

我已经得到的数字,我不知道是不是正确与否,感谢帮助

+0

你在想什么?你的阴谋命令对我没有意义... – ThP 2014-09-27 12:14:48

+0

我尝试绘制正态分布N(0,1)(来自formul加入)的经验平均均值和经验方差 – Lina 2014-09-27 12:50:26

+1

因此, n矩阵的正态分布过程,然后计算每列的均值和方差。你为什么绘制它'x'与平均值\方差? – ThP 2014-09-27 13:16:29

回答

2

从你的问题,看来你需要做的是从样本计算的均值和方差大小N(也不是NxN矩阵)从标准正态分布中抽取。所以你可能想要使用randn(n,1),而不是randn(n)。也正如@ThP指出的那样,绘制均值和方差对x没有意义。你可以做的是计算平均值和方差,以增加样本大小n1,n2,...,nm,然后绘制样本大小与平均值或方差,看它们收敛到0和1.请参阅下面的代码:

function [] = plotMnV(nIter) 
means = zeros(nIter, 1); 
vars = zeros(nIter, 1); 
for pow = 1:nIter 
    n = 2^pow; 
    x =randn(n, 1); 
    means(pow) = 1./n * sum(x); 
    vars(pow) = 1./n * sum(x.^2); 
end 

plot(1:nIter, means, 'o-'); 
hold on; 
plot(1:nIter, vars, '*-'); 

end 

例如,plotMnV(20)给了我下面的图。

enter image description here

+2

您也可以使用'cumsum'而不是'for'循环 – ThP 2014-09-27 14:42:40

+0

非常感谢@Fijoy Vadakkumpadan和ThP的帮助:D – Lina 2014-09-27 17:00:04

相关问题