|
我在做Wigner-Hough变换的chirp信号检测,但是在参数估计的时候发现估计值总是根实际值对应不上,及其郁闷。我参考了《基于Wigner-Hough变换的径向加速度估计》这篇文章,介绍的比较详细,我觉得也是正确的。但是,在Matlab中估计的值却对应不上。我给出我的程序代码,希望大家给我看一下问题出在哪里。
%% 利用Wigner-Hough变换检测LFM信号
%% 信号产生
n=128;
fs=512;
t=0:1/fs:n/fs-1/fs;
f0=100;
u0=80;
signal=exp(-j*2*pi*f0*t-j*pi*u0*t.^2); %% 目标信号
% noise_real=randn(1,n); %% 噪声的产生
% noise_imag=randn(1,n);
% noise=noise_real+j*noise_imag;
%
% signal=signal+noise;
% figure;
% plot(t,abs(signal));
% xlabel('时间 t');
% ylabel('幅值 A');
%% 计算Wigner-Ville变换
[wv,t,f]=tfrwv(signal');
% figure;
% contour(t,f,wv);
% xlabel('时间 t');
% ylabel('频率 f');
figure;
mesh(t,f,abs(wv).^2);
xlabel('时间 t');
ylabel('频率 f');
%% 计算Hough变换
[wh,rho,theta]=htl(wv,n,n); % [wh,rho,theta]=hough(wv);
figure;
mesh(rho,theta,wh);
xlabel('极半径 rho');
ylabel('角度 theta');
[C, I] = max(wh);
[D, J] = max(C);
rho0 = rho(J);
theta0=theta(I(J));
m_est = tan(theta0)*(fs^2)/(2*n);
f_est = (n/2-tan(theta0)*n/2+rho0/cos(theta0))*fs/(2*n);
m_est和f_est分别是调频率和中心频率的估计值。但是根实际值总是对应不上。应该怎么解决?~ |
|