用MATLAB对频率为20MHZ,信噪比为-10,-20,-30的信号进行FFT
时间: 2023-12-03 17:42:13 浏览: 69
首先,我们需要生成一个频率为20MHz的信号,并加入不同信噪比的高斯噪声。假设采样率为100MHz,我们可以使用以下代码生成信号:
```
fs = 100e6; % 采样率
f = 20e6; % 信号频率
t = 0:1/fs:1e-6; % 信号时间长度为1微秒
signal = cos(2*pi*f*t); % 生成信号
SNR = [-10, -20, -30]; % 三种信噪比
for i = 1:length(SNR)
noise = randn(size(signal)); % 生成高斯噪声
signal_with_noise = signal + 10^(-SNR(i)/20)*noise; % 添加噪声
figure(i); % 创建新的图形窗口
plot(t, signal_with_noise); % 绘制信号
xlabel('Time (s)'); ylabel('Amplitude');
title(['Signal with SNR = ' num2str(SNR(i)) 'dB']);
end
```
接下来,我们可以使用MATLAB中的fft函数对信号进行快速傅里叶变换,并绘制频谱图。代码如下:
```
N = length(signal_with_noise); % 信号长度
f = (0:N-1)*(fs/N); % 频率坐标轴
for i = 1:length(SNR)
signal_fft = fft(signal_with_noise(:,i))/N;
signal_fft = signal_fft(1:N/2+1); % 取一半频谱
power = abs(signal_fft).^2; % 计算功率谱密度
figure(i); % 创建新的图形窗口
plot(f/1e6,10*log10(power)); % 绘制频谱图
xlabel('Frequency (MHz)'); ylabel('Power/frequency (dB/Hz)');
title(['FFT of signal with SNR = ' num2str(SNR(i)) 'dB']);
end
```
运行代码后,我们可以得到三个频谱图,分别对应三种信噪比情况下的信号FFT结果。
阅读全文