写一个计算两个波形信噪比的matlab代码
时间: 2024-10-01 22:12:00 浏览: 24
基于 Matlab 实现 雷达/通信信号波形的仿真与时频分析
在MATLAB中,计算两个波形(假设一个是干净的信号,另一个包含噪声)之间的信噪比(Signal-to-Noise Ratio, SNR)通常涉及以下几个步骤:
1. **载入数据**:先加载包含噪声的波形和参考的纯净波形数据。假设这两个信号分别是`noisy_signal`和`clean_signal`。
```matlab
noisy_data = load('noisy_waveform.mat');
noisy_signal = noisy_data.signal;
clean_data = load('clean_waveform.mat');
clean_signal = clean_data.signal;
```
2. **计算功率**:对于每个信号,我们需要计算其平均平方值作为功率。注意,这个过程需要确保信号是对称的(即正负幅度相等)。
```matlab
power_noisy = mean(noisy_signal.^2);
power_clean = mean(clean_signal.^2);
```
3. **计算SNR**:信噪比是干净信号功率除以噪声功率,单位通常是分贝(dB)。
```matlab
SNR_db = 10 * log10(power_clean / power_noisy);
```
完整的MATLAB代码示例:
```matlab
% 载入数据
noisy_data = load('noisy_waveform.mat');
noisy_signal = noisy_data.signal;
clean_data = load('clean_waveform.mat');
clean_signal = clean_data.signal;
阅读全文