雷达图像分辨率不够糊成一团?Music算法直接给你整出高清无码!这玩意儿在阵列信号处理里原本用来估计波达方向,但用在雷达成像上简直就是物理外挂
matlab的Music算法可用于雷达超分辨成像提高图像分辨率先搞点基础姿势雷达回波数据本质上就是个协方差矩阵。老司机们都知道这矩阵藏着信号子空间和噪声子空间的小秘密。咱们用MATLAB玩这个先得把数据矩阵收拾明白% 生成32阵元接收的雷达回波 N 32; % 天线个数 snapshots 1000; % 快拍数 targets 4; % 假设4个目标 % 构造带噪声的接收数据 theta [-30, -5, 10, 25]; % 目标方位角 A exp(-1j*pi*(0:N-1)*sind(theta)); % 导向矢量 data A * (randn(targets,snapshots) 1j*randn(targets,snapshots))/sqrt(2); noise (randn(N,snapshots) 1j*randn(N,snapshots))/sqrt(2); X data 0.5*noise; % 加噪后的接收信号这段代码里有个骚操作——用随机数生成目标反射信号这比传统方法更接近实战环境。注意噪声系数0.5控制信噪比调这个参数直接影响后面成像效果。关键戏肉来了——Music算法的核心就是怼特征值R X*X/snapshots; % 计算协方差矩阵 [E,D] eig(R); % 特征分解 [~,idx] sort(diag(D),descend); En E(:,1:targets); % 信号子空间 En E(:,targets1:end); % 噪声子空间这里有个坑目标数必须事先知道或者估计准确。实际工程中得用AIC或者MDL准则判断不过咱们今天先手动设targets4。最后上硬菜——空间谱扫描angles -90:0.1:90; P zeros(size(angles)); for i 1:length(angles) a exp(-1j*pi*(0:N-1)*sind(angles(i))); P(i) 1/(a*(En*En)*a); end plot(angles,10*log10(abs(P))) xlabel(方位角/度); ylabel(空间谱/dB); grid on; title(Music算法超分辨成像);这个for循环看着土但最能说明问题。每个角度构造导向矢量然后和噪声子空间做正交性测试。注意这里取倒数来放大差异所以峰值位置就是目标方位。matlab的Music算法可用于雷达超分辨成像提高图像分辨率跑完程序你会看到-30、-5、10、25度四个尖峰比传统FFT方法分辨率高出一个量级。实测发现当两个目标只差3度时普通算法已经糊成一片Music还能清晰分辨。不过别high太早这算法吃硬件跟吃糖似的——O(N^3)的计算复杂度。64阵元时协方差矩阵就有4096元素实时处理得靠GPU加速。另外对相干信号源会拉胯这时候得用前后向平滑这类魔改方案。代码里藏了个小trick导向矢量用pi乘而不是2pi因为阵元间距默认半波长。要是你的雷达阵列不是半波长排布记得把这参数改成实际值否则直接翻车。最后说个冷知识Music全称是MUltiple SIgnal Classification但这名字其实是后来硬凑的缩写。发明者Schmidt老爷子最初论文里根本没提全称这梗在信号处理圈都快成玄学了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411990.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!