利用MATLAB程序设计一正按型信号加高斯白噪声的复合信号。
时间: 2024-12-27 18:08:21 浏览: 3
在MATLAB中设计一个正弦波信号并叠加高斯白噪声,可以分为几个步骤:
1. **生成正弦波信号**:
使用`sin`函数创建一个特定频率、幅度和时间长度的正弦波。例如,假设你想要一个频率为`f`, 幅度为`A`, 时间跨度为`t`的信号:
```matlab
t = 0:1/fs:t_max; % 创建时间向量,fs是采样率
f = 5; % 正弦波频率 (Hz)
A = 1; % 正弦波幅度
s单纯 = A*sin(2*pi*f*t); % 正弦波信号
```
2. **生成高斯白噪声**:
MATLAB有内置函数`awgn`用于添加指定SNR(信噪比)的高斯白噪声。例如,将噪声添加到信号`s单纯`上:
```matlab
snr = 10; % 指定信噪比 (dB)
noise_power = 10^(-snr/20); % 计算噪声功率
n = sqrt(noise_power) * randn(size(t)); % 高斯白噪声
```
3. **叠加噪声**:
最后,将噪声和正弦波信号相加得到复合信号:
```matlab
noisy_signal = s单纯 + n;
```
完整代码示例:
```matlab
t_max = 1; % 总时间
fs = 1000; % 采样频率 (Hz)
s单纯 = A*sin(2*pi*f*t); % 正弦波信号
% 添加噪声
snr = 10; % 信噪比 (dB)
noisy_signal = awgn(s单纯, snr, 'measured'); % 使用AWGN函数
% 绘制原始信号和噪音以及复合信号
plot(t, s单纯, 'b', t, n, 'g--', t, noisy_signal, 'r');
legend('Original Signal', 'Noise', 'Noisy Signal');
xlabel('Time (s)');
ylabel('Amplitude');
%
阅读全文