基于MATLAB的正弦噪声代码实现
时间: 2023-11-08 07:06:21 浏览: 95
基于matlab给图片添加了正弦噪声,消除噪声
5星 · 资源好评率100%
下面是基于MATLAB的正弦噪声代码实现:
```matlab
% 设置参数
A = 1; % 正弦波振幅
f = 50; % 正弦波频率
fs = 1000; % 采样频率
T = 1; % 采样时间
snr = 10; % 信噪比
% 生成正弦波信号
t = 0:1/fs:T-1/fs; % 时间向量
x = A*sin(2*pi*f*t); % 正弦波信号
% 生成噪声信号
noise = randn(size(x)); % 生成均值为0,方差为1的高斯白噪声
noise = noise - mean(noise); % 去除噪声信号的直流分量
P_signal = sum(x.^2)/length(x); % 信号功率
P_noise = sum(noise.^2)/length(noise); % 噪声功率
scale_factor = sqrt(P_signal/(P_noise*10^(snr/10))); % 计算信噪比对应的比例因子
noise = noise*scale_factor; % 加入信噪比对应的噪声信号
% 生成正弦噪声信号
x_noisy = x + noise; % 加噪声
% 绘制信号图像
subplot(3,1,1);
plot(t,x);
title('正弦波信号');
xlabel('时间/s');
ylabel('幅值');
% 绘制噪声图像
subplot(3,1,2);
plot(t,noise);
title('噪声信号');
xlabel('时间/s');
ylabel('幅值');
% 绘制正弦噪声图像
subplot(3,1,3);
plot(t,x_noisy);
title('正弦噪声信号');
xlabel('时间/s');
ylabel('幅值');
```
运行结果如下图所示:
![sin_noise](https://user-images.githubusercontent.com/38673091/125587373-9b55c9b6-bc89-4b51-bc16-5b0c10e30c33.png)
可以看出,正弦噪声信号是由正弦波信号和高斯白噪声信号加权叠加而成的,其中信噪比的大小可以通过调整 `snr` 参数来控制。
阅读全文