用matlab对-10dB,-20dB,-30dB,f=20MHz正弦信号进行FFT并画出频谱图得出信噪比
时间: 2023-09-09 10:10:36 浏览: 368
首先,生成正弦信号:
```
f = 20e6; % 信号频率
t = 0:1/(10*f):10/f; % 采样时间
x1 = sin(2*pi*f*t); % -10dB信号
x2 = 0.3162*sin(2*pi*f*t); % -20dB信号
x3 = 0.1*sin(2*pi*f*t); % -30dB信号
```
其中,-10dB信号的振幅为1,-20dB信号的振幅为0.3162(10的(-20/20)次方),-30dB信号的振幅为0.1(10的(-30/20)次方)。
接着,使用MATLAB中的fft函数对信号进行FFT,并画出频谱图:
```
N = length(x1); % FFT长度
X1 = fft(x1, N); % -10dB信号的FFT
X2 = fft(x2, N); % -20dB信号的FFT
X3 = fft(x3, N); % -30dB信号的FFT
f_axis = (0:N-1)/N*f; % 频率轴
subplot(3,1,1);
plot(f_axis, 20*log10(abs(X1))); % -10dB信号的频谱图
title('-10dB Signal Spectrum');
ylabel('Amplitude (dB)');
subplot(3,1,2);
plot(f_axis, 20*log10(abs(X2))); % -20dB信号的频谱图
title('-20dB Signal Spectrum');
ylabel('Amplitude (dB)');
subplot(3,1,3);
plot(f_axis, 20*log10(abs(X3))); % -30dB信号的频谱图
title('-30dB Signal Spectrum');
ylabel('Amplitude (dB)');
xlabel('Frequency (Hz)');
```
其中,20*log10(abs(X))用于将FFT结果转换为dB单位。
最后,可以通过观察频谱图得出信噪比。在频谱图中,信号的幅度值与噪声的幅度值之比即为信噪比。因此,可以通过计算信号幅度峰值与噪声幅度均值之比来估计信噪比。
阅读全文