2013-08-27 24 views
-2

我有2560個採樣點。我想計算第一個512點的平均方差偏度峯度,接下來是512等。所以總共有5組輸出數據。我想在圖中繪製5組平均值,var,skew,kur的值。如何使用循環我的問題

我讀從Excel由2560點

x=xlsread('dta.xls'); 
i=1:512; 
y=x(i) 
m=mean(y); 
v=var(y); 
i=513:1024; 
y=x(i) 
m=mean(y); 
v=var(y); 
i=1025:1536 
y=x(i) 
m=mean(y); 
v=var(y); 
plot(m) 
plot(v) 

像這樣我的代碼回事數據。我嘗試使用循環,但我無法做到這一點。

+2

你能詳細說明你到目前爲止所嘗試過的嗎?不是[for documentation](http://www.mathworks.com/help/matlab/matlab_prog/loop-control-statements.html)已經有幫助了嗎? –

回答

1

嘗試這樣:

x = xlsread('dta.xls'); 
ns = length(x); % number of samples 
bs = 512; % bin size 
bc = floor(ns/bs); % bin count 
m = zeros(bc, 1); % array of means 
v = zeros(bc, 1); % array of variances 
for i = 1 : bc 
    i1 = (i - 1) * bs + 1; 
    i2 = i * bs; 
    b = x(i1 : i2); % current bin 
    m(i) = mean(b); 
    v(i) = var(b); 
end; 
figure; 
subplot(211); plot(m, '.-'); 
subplot(212); plot(v, '.-'); 

Here是一個工作的例子。

0

除了托比亞斯: 糾正我,如果我錯了,但在我看來,i=1:512 + 512*j總是以1 在它應該是每次下一個512這樣的問題開始我有這樣的改變:

for j=0:4 
    i=512*j+1 : 512+512*j 
    y=x(i) 
    m=mean(y); 
    v=var(y); 
    plot(m) 
    plot(v) 
end 
+0

啊是的,它應該是'[1:512] + 512 * j',但是由於OP沒有顯示任何努力,我刪除了答案 –