⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p3182.m

📁 利用一般最小二乘法和SVD-TLS方法 进行AR参数估计和正弦波频率估计
💻 M
字号:
%SVD-TLS方法(未引入随机相位)
clear all;

N = 128;
Pi = 3.1415926;
n = [1:1:N];
pe= 58;
M = 68;

Times=100;
f=zeros(Times,2);
for k=1:Times
    
w = randn(1,N);
x = sqrt(20)*sin(2*Pi*0.2*n)+sqrt(2)*sin(2*Pi*0.213*n)+w;

%r=R(N,x,T)       %N is the data number,T is the time delay
Re=zeros(M,pe+1);
for i=1:M
    for j=1:pe+1
        T=pe+i-(j-1);
        Re(i,j)=R(N,x,T);
    end
end
%[U,d,V]=svd(R);U为左奇异矩阵,d为对角阵
[U,d,V]=svd(Re);
for i=1:pe+1 
    P(i) = d(i,i);
end
for i=1:pe+1 
    if (P(i)/P(1))<=0.05
        p=i-1+mod(i-1,2);
        break;
    end
end

nn=pe;
S = zeros(p+1,p+1);
for j=1:p
    for i=1:nn+1-p
        S=S+(P(j))^2*V(i:i+p,j)*(V(i:i+p,j))';
    end
end
Sn=S^(-1);
for i=1:p
    a(k,i)=Sn(i+1,1)/Sn(1,1);
end

z=roots([1,a(k,1:p)]);
num=1;
for i=1:p
    if abs(z(i))<1.05 & abs(z(i))>0.95
        temp=atan(imag(z(i))/real(z(i)))/(2*Pi);
        if temp>0
            f(k,num)=temp;
            num=num+1;
        end
    end
end

end

%让f从大到小排序
f=sort(f,2,'ascend');

ua=sum(a)/Times;
da=0;
for i=1:Times
    da=da+((a(i,:)-ua).^2);
end
da=da/Times;

uf=sum(f)/Times;
df=0;
for i=1:Times
    df=df+((f(i,:)-uf).^2);
end
df=df/Times;

ua
da
uf
realf=[0.2 0.213]
offset=abs(realf-uf)
f;
df

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -