2014-09-27 70 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

相關問題