利用fft观察频率
%实信号
fs=50;%采样频率50Hz
f1=15;
f2=20;
t = 0:1/Fs:10-1/Fs; % 0-9.98s 一共500个点
x = sin(2*pi*f1*t) + sin(2*pi*f2*t);%原始信号
fftplot(x,fs);
%%
%复信号
fs = 4e9;
bw = 20e6;
pw = 2e-6;
pri = 200e-6;
LFM = phased.LinearFMWaveform('SampleRate',fs,...
'SweepBandwidth',200e6,...
'PulseWidth',pw,'PRF',1/pri,'FrequencyOffset',1.2e9);
x= LFM();
fftplot(x,fs);
function fftplot(signal, fs)
% signal: 离散信号 % time: 离散时间
N = length(signal);
X = abs(fftshift(fft(signal)));
f = linspace(-fs/2, fs/2, N);
figure;
plot(f,X);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('FFT plot');
grid on;
end


利用stft观察频率
对于一般的只是向看一下频谱特点时则只需要传入离散信号与采样率即可,stft函数会自动绘图。对于其他有细节操作限制时,则需要另外规定。
% 创建LinearFMWaveform对象
LFM = phased.LinearFMWaveform('SampleRate', 4e9, 'PulseWidth', 2e-6, ...
'PRF', 1/4e-6, 'OutputFormat', 'Pulses', ...
'SweepBandwidth', 200e6, 'SweepDirection', 'Up', 'FrequencyOffset', 1.2e9);
signal = LFM();
figure();
plot(abs(signal));
figure();
%仅传入信号与采样率
stft(signal,LFM.SampleRate);


对图像三维可视化

对信号操作有特殊要求
% 创建LinearFMWaveform对象
LFM = phased.LinearFMWaveform('SampleRate', 4e9, 'PulseWidth', 2e-6, ...
'PRF', 1/4e-6, 'OutputFormat', 'Pulses', ...
'SweepBandwidth', 200e6, 'SweepDirection', 'Up', 'FrequencyOffset', 1.2e9);
% 发送信号
signal = LFM();
window_len = round(length(signal)/10); % 窗口长度
num_overlap = round(window_len/2); % 窗口重叠数量
nfft = 2^nextpow2(window_len); % FFT长度
stft(signal, LFM.SampleRate, 'Window', hamming(window_len), ...
'OverlapLength', num_overlap, 'FFTLength', nfft);
