如何为我的问题使用循环

时间:2013-08-27 12:18:26

标签: matlab

我有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)
这是我的代码。我尝试使用for循环,但我无法做到。

2 个答案:

答案 0 :(得分: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是一个有效的例子。

答案 1 :(得分: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