matlab产生一个10兆hz的正弦信号并添加信噪比为0dB的高斯白噪声
时间: 2023-11-27 12:51:35 浏览: 98
使用matlab给信号添加某一信噪比的噪声
可以使用以下代码生成一个10 MHz正弦信号,并添加信噪比为0 dB的高斯白噪声:
```matlab
% 生成10 MHz正弦信号
fs = 100e6; % 采样率为100 MHz
t = 0:1/fs:1e-6; % 生成1微秒的时间序列
f = 10e6; % 正弦信号频率为10 MHz
x = sin(2*pi*f*t); % 生成正弦信号
% 添加高斯白噪声
SNR = 0; % 信噪比为0 dB
P_signal = norm(x)^2/length(x); % 信号功率
P_noise = P_signal/(10^(SNR/10)); % 噪声功率
noise = sqrt(P_noise)*randn(size(x)); % 生成噪声
y = x + noise; % 添加噪声
```
解释一下代码:
1. 首先定义了采样率`fs`、时间序列`t`和正弦信号频率`f`。
2. 通过`sine`函数生成一个10 MHz正弦信号。
3. 定义信噪比`SNR`为0 dB,计算出信号功率`P_signal`。
4. 根据信噪比计算出噪声功率`P_noise`。
5. 通过`randn`函数生成一个与正弦信号相同大小的高斯白噪声。
6. 将噪声与正弦信号相加,得到最终的含噪声信号`y`。
阅读全文