回 帖 发 新 帖 刷新版面

主题:求助

clc;
clear;
N=1000;
m=1;
n=10;
% for i=1:10
sumSNR=0;
x1=randn(1,N);
v1=rand(1,N);
wn=0.25;
 h=fir1(N,wn);
 x=filter(h,1,x1);
 v=sqrt(var(x))*v1;%保证信噪比为0;
y=x+v;
rx=xcorr(x,N);
for i=m:n;m<N-10+1;n<N+1;
    for i=m:n;m<N-10+1;n<N+1;
        if j>i;
    r(i,j)=rx(j-i+1);
        else if j==i;
          r(i,j)=1;  
           if j<i;
                r(i,j)=r(j,i)
            end 
        end
        end
        m=m+10;
        n=n+10;
    end
    m=m+10;
        n=n+10;
end %产生相关函数矩阵。其中,对角线为x(i)自身相关,定义为1,分两段求,第一段
   [v,d]=eig(r);
   O=zeros(N,1);
aver=mean(v);
e=sum(aver)/N;
for k=1:N;
    if aver(k)<e
        r(:,k)=O;
    end
end
  %去掉小于平均值的列
    xx=y*r;  %重构原信号
  sumSNR=10*log(var(xx));
sumSNR
  
   
这是我编的求K-L变换的代码,但是运行不了,不知道哪位高手能帮忙下啊

回复列表 (共1个回复)

沙发

matlab提示你没用定义变量r,不知道你的r这里是多少,所以运行不下去了

我来回复

您尚未登录,请登录后再回复。点此登录或注册