如何解决使用 MATLAB 在时域中创建和恢复频移
我正在尝试模拟和处理多普勒信号。我的主要问题有点复杂,所以我只发布了一个简单的版本
- 任务 1:
我有一个目标速度为 mu
的时域信号。我需要将速度更改为 mu cos(theta)
,其中 theta 是从 0
到 2 pi
的向量,时域信号中的点数相同。所以,原始时域信号中的每一点都应该有这种变化。这意味着多普勒频率(速度)不是随时间恒定的。
- 任务 2:
然后,在我得到这个信号后,我想在不知道 mu 的情况下恢复原始频谱(以恒定速度)。所以我需要了解相位,然后以某种方式修改它以获得实际信号。
clear;
close all;
lambda = 0.03;
M = 61;
hs = 128;
N = hs * M; % Number of points in the time axis
mu = 4; % Doppler velocity
PRT = 1e-3; % Time step
t1 = 0:PRT:(N - 1)*PRT; % Time axis
s_ = exp(1j .* 4 * pi ./ lambda .* mu .* t1); % Original Time domain signal
s_f = fftshift(fft(s_)); % FT of the original time domain signal
v_amb = 7.5;
v_axis = linspace(-N/2,N/2-1,N)/N .* 2 * v_amb; % Velocity axis
figure; plot(v_axis,db(abs(s_f))); title('Original spectrum') % Original spectrum
%% Task1:
BW = 1*pi/180;
p0 = 0*pi/180;
p1 = 360*pi/180;
th = linspace(p0,p1,N); % Angle axis for cos(theta)
s_man_ = abs(s_) .* exp(1j .* (angle(s_)) + 1j * 4*pi/lambda * mu * (cos(th) - 1) .* t1); % Modified time domain signal with cos(theta)
s_man_f_full = fftshift(fft(s_man_)); % FT of the modified time domain signal
%% Task 2
s_man_comp = abs(s_man_) .* exp(1j .* (angle(s_man_)) ./ cos(th)); % Reconstruction of the original signal in time domain
s_man_comp_f = fftshift(fft(s_man_comp)); % FT of the reconstructed signal
figure(1); hold on; plot(v_axis,db(abs(s_man_f_full)));
hold on; plot(v_axis,db(abs(s_man_comp_f)));
legend({'HD spectrum','Manipulated with cosine Spectrum','Compensated from Manipulated spectrum'}); grid on;
如下图所示。黄色图应该类似于蓝色污点,但事实并非如此。知道我在这里做错了什么吗?红色图还应该在图中显示多个尖峰,而不是像我想的这样的噪声信号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。