📄 p3203.m
字号:
%基本ESPRIT算法2(未加入随机相位)
clear all;
N = 128;
Pi = 3.1415926;
n = [1:1:128];
m= 35;
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
Rxx = zeros(m,m);
for i=1:m
for j=1:m
if (i-j)>=0
Rxx(i,j)=R(N,x,(i-j));
else
Rxx(i,j)=(R(N,x,(j-i))').';
end
end
end
[U,D] = eig(Rxx);
for i=1:m
d(i)=D(i,i);
end
%让d从大到小排序
d=sort(d,'descend');
for i=1:m
if d(i)/d(1)<0.05
p=i-1;
break;
end
end
Us=U(:,m-p+1:m);
U1=Us(1:m-1,:);
U2=Us(2:m,:);
F=(U1'*U1)^(-1)*(U1'*U2);
dd = eig(F);
num=1;
W=0;
for i=1:p
if abs(dd(i))>0.95 & abs(dd(i))<1.05
temp=atan(imag(dd(i))/real(dd(i)));
if real(dd(i))>=0 & imag(dd(i))>=0
f(k,num)=temp;
num=num+1;
end
if real(dd(i))<0 & imag(dd(i))>=0
f(k,num)=temp+Pi;
num=num+1;
end
end
end
end
f=f/(2*Pi);
f=sort(f,2,'descend');
uf=sum(f)/Times;
df=0;
for i=1:Times
df=df+((f(i,:)-uf).^2);
end
df=df/Times;
f;
uf
df
p;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -