用matlab对-10dB,-20dB,-30dB,f=20MHz信号进行FFT并画出频谱图并得出信噪比
时间: 2023-12-03 07:42:04 浏览: 73
matlab_语音信号加噪和降噪处理,对噪声信号进行有效地滤除,将降噪后的语音信号与原始信号在时域和频域进行对比分析,计算信噪比
5星 · 资源好评率100%
首先,我们需要生成这些信号。可以使用以下代码:
```matlab
% 生成信号
fs = 100e6; % 采样率
t = 0:1/fs:1e-6; % 时间向量
f = 20e6; % 信号频率
s1 = sin(2*pi*f*t); % 20MHz信号
% 添加噪声
s2 = awgn(s1, -10, 'measured'); % -10dB信噪比
s3 = awgn(s1, -20, 'measured'); % -20dB信噪比
s4 = awgn(s1, -30, 'measured'); % -30dB信噪比
```
然后,我们可以对这些信号进行FFT,并画出频谱图。可以使用以下代码:
```matlab
% 进行FFT
N = length(s1);
S1 = fft(s1)/N;
S2 = fft(s2)/N;
S3 = fft(s3)/N;
S4 = fft(s4)/N;
% 计算频率向量
fvec = fs*(0:N-1)/N;
% 画出频谱图
figure;
plot(fvec/1e6, abs(S1), fvec/1e6, abs(S2), fvec/1e6, abs(S3), fvec/1e6, abs(S4));
xlabel('频率 (MHz)');
ylabel('幅度');
legend('-10dB',' -20dB', '-30dB');
```
最后,我们需要计算信噪比。可以使用以下代码:
```matlab
% 计算信噪比
SNR1 = snr(s1);
SNR2 = snr(s2-s1);
SNR3 = snr(s3-s1);
SNR4 = snr(s4-s1);
% 输出信噪比
fprintf('20MHz信号的信噪比为 %.2f dB\n', SNR1);
fprintf('-10dB信噪比为 %.2f dB\n', SNR2);
fprintf('-20dB信噪比为 %.2f dB\n', SNR3);
fprintf('-30dB信噪比为 %.2f dB\n', SNR4);
```
注意,需要使用`snr`函数来计算信噪比。输出结果将显示每个信号的信噪比。
阅读全文