梓爱 发表于 2012-7-13 11:35

求:用MATLAB求自相关系数

下面这个程序为什么运行出错呢
function r=cor_self(x,p,q)
%连续计算一个序列(列向量)的自相关系数,其中滞后时间k由p变化到q
clc;close all;
n=size(x,1);
for k=p:q
    sum=0;
    for i=1:n-k
        sum=sum+(x(i)-mean(x(1:n-k)))*(x(i+k)-mean(x(1+k:n)));
    end
    r(k+1)=sum/std(x(1:n-k))/std(x(1+k:n))/(n-k);
end
k=;
plot(k,r,'-*');
refline(0,0);
end
运行显示
Error using ==> plot
Vectors must be the same lengths.

Error in ==> cor_self at 13
plot(k,r,'-*');

zjqylcy 发表于 2012-7-13 16:31

k r 长度不一样   应该是r多了一位   可以进workspace里面看看

梓爱 发表于 2012-7-15 10:13

zjqylcy 发表于 2012-7-13 16:31 static/image/common/back.gif
k r 长度不一样   应该是r多了一位   可以进workspace里面看看

这个后来我又试了下,是矩阵的问题,x的输入应该是列向量的形式,不过k的范围是怎么确定的呀,我输入的是从0到12,可是出来的结果第十一和第十二的数显示为naf,帮忙解释下吧,谢谢了~~

zjqylcy 发表于 2012-7-16 10:49

我看不太明白的是   你前面K是一个变 后面K又成了一个矩阵   
  naf一般就是分母为0了
页: [1]
查看完整版本: 求:用MATLAB求自相关系数