-2

我有 2560 个样本点。我想计算前 512 个点的平均方差偏度峰度,接下来是 512 个点,依此类推。所以总共有 5 组输出数据。我想在图中绘制 5 组 mean 、 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 循环,但我无法做到。

4

2 回答 2

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, '.-');

是一个工作示例。

于 2013-08-27T12:35:13.683 回答
0

除了 Tobias:如果我错了,请纠正我,但在我看来,它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
于 2013-08-27T12:38:33.920 回答