📄 esprit.m
字号:
%
% [f b]=esprit(x, P, nv)
% inputs
% x : data sequence
% P : number of poles
% nv : noise variance
% Modified by D. G. Childers
function [f, b, l] = esprit(x,P,nv)
P=2*P;
%The above is to account for the number of real signals, i.e.,
%there are two complex exponentials for each real signal.
ns=length(x);
[a, S, R]=correl(x, P);
W=nv*eye(size(R));
[E, D]=eig(R, W);
lambda=real(diag(D));
%k=length(lambda);
%k=1:k;
%plot(k,lambda);
%pause
M=10;
E=W*E(:,1:M);
[r, c]=size(E);
B=E(1:(r-1),:); BP=E(2:r,:);
[U,S,V]=svd([B BP]);
v12=V(1:M,(M+1):(2*M));
v22=V((M+1):(2*M),(M+1):(2*M));
lambda=eig(-v12*inv(v22));
f=[angle(lambda)]; % f is in units of radians from 0 to + - pi
b=[abs(lambda)]; % b is the magnitude of eigenvalue, approximately unity
l=lambda;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -