用matlab分析正弦信号0.5sin(100*pi*t )+ 0.3sin(200*pi*t ) +0.2sin(300*pi*t ) 叠加一个均值为 0.2,方差 为 0.5 的高斯噪声后的信号和噪声功率谱密度。
时间: 2024-11-25 17:17:29 浏览: 13
傅里叶级数展开matlab实现.pdf
在MATLAB中,分析正弦信号与叠加高斯噪声后的信号以及噪声功率谱密度通常需要几个步骤:
1. **创建正弦信号**:
```matlab
t = linspace(0, 1, 1000); % 创建时间向量,假设采样频率为1kHz
x = 0.5*sin(100*pi*t) + 0.3*sin(200*pi*t) + 0.2*sin(300*pi*t); % 正弦信号
```
2. **添加高斯白噪声**:
```matlab
noise_std = sqrt(0.5); % 标准偏差
noise = noise_std * randn(size(t)); % 生成高斯噪声
noisy_signal = x + noise; % 噪声叠加到正弦信号上
```
3. **计算平均值和方差**:
```matlab
mean_noise = mean(noise);
variance_noise = var(noise);
```
4. **功率谱密度估计**:
- 对于噪声部分,通常使用窗函数(如汉明窗、黑曼窗等)平滑信号并计算其离散傅立叶变换(DFT)。例如,可以使用`periodogram`函数:
```matlab
window = hamming(length(t)); % 窗口函数
psd_noise = periodogram(noise, [], [], t, 'Window', window, 'OverlapType', 'full');
```
- 对于总信号(包含正弦波和噪声),也可以对`noisy_signal`做同样的处理,得到总的噪声+信号PSD。
5. **绘制结果**:
```matlab
plot(psd_noise, 'b', 'LineWidth', 2, 'DisplayName', 'Noise PSD'); % 噪声功率谱密度
hold on;
plot(psd_total, 'r', 'LineWidth', 2, 'DisplayName', 'Total Signal PSD'); % 总信号功率谱密度
legend('Location', 'best')
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density (dB/Hz)');
title('Signal and Noise Power Spectrum Density');
```
阅读全文