matlab代码求噪声信号的snr信噪比波形
时间: 2023-07-26 15:10:17 浏览: 44
以下是MATLAB代码示例,可以用于计算噪声信号的信噪比(SNR)并绘制SNR波形:
```
% 生成信号和噪声
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间向量
signal = sin(2*pi*50*t); % 信号
noise = randn(size(signal)); % 高斯噪声
% 计算信噪比
snr = 20*log10(norm(signal)/norm(noise));
% 绘制信号和噪声波形
figure;
subplot(2,1,1);
plot(t, signal);
title('Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2,1,2);
plot(t, noise);
title('Noise');
xlabel('Time (s)');
ylabel('Amplitude');
% 绘制信噪比波形
snr_vec = zeros(1, length(t));
for i = 1:length(t)
snr_vec(i) = 20*log10(norm(signal(1:i))/norm(noise(1:i)));
end
figure;
plot(t, snr_vec);
title('SNR');
xlabel('Time (s)');
ylabel('SNR (dB)');
```
在这个示例中,我们使用 `randn` 函数生成高斯噪声,并使用 `norm` 函数计算信号和噪声的范数。计算信噪比的公式为 `snr = 20*log10(norm(signal)/norm(noise))`。我们还绘制了信号、噪声和SNR波形,以便更好地理解信噪比的变化。