matlab单频正弦噪声去噪
时间: 2023-12-27 09:04:30 浏览: 150
matlab去噪声
以下是使用MATLAB对单频正弦噪声进行去噪的步骤:
1.生成单频正弦噪声信号
```matlab
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间向量
f0 = 50; % 正弦信号频率
x = sin(2*pi*f0*t); % 生成正弦信号
noise = 0.5*randn(size(t)); % 生成高斯白噪声
y = x + noise; % 加噪声
```
2.绘制原始信号和加噪声信号的时域波形图
```matlab
subplot(2,1,1);
plot(t,x);
title('原始信号');
xlabel('时间(s)');
ylabel('幅值');
subplot(2,1,2);
plot(t,y);
title('加噪声信号');
xlabel('时间(s)');
ylabel('幅值');
```
3.绘制原始信号和加噪声信号的频谱图
```matlab
N = length(y);
f = (0:N-1)*(fs/N);
Y = fft(y);
Pyy = Y.*conj(Y)/N;
subplot(2,1,1);
plot(f,Pyy);
title('加噪声信号频谱图');
xlabel('频率(Hz)');
ylabel('功率谱');
xlim([0,fs/2]);
X = fft(x);
Pxx = X.*conj(X)/N;
subplot(2,1,2);
plot(f,Pxx);
title('原始信号频谱图');
xlabel('频率(Hz)');
ylabel('功率谱');
xlim([0,fs/2]);
```
4.设计滤波器
```matlab
fpass = [48 52]; % 通带频率范围
Apass = 1; % 通带最大衰减
fstops = [45 55]; % 阻带频率范围
Astop = 80; % 阻带最小衰减
h = firceqrip(31,fpass,Apass,fstops,Astop,fs); % 设计FIR滤波器
```
5.滤波
```matlab
z = filter(h,1,y); % 滤波
```
6.绘制滤波后的信号的时域波形图和频谱图
```matlab
subplot(2,1,1);
plot(t,z);
title('滤波后信号');
xlabel('时间(s)');
ylabel('幅值');
subplot(2,1,2);
Z = fft(z);
Pzz = Z.*conj(Z)/N;
plot(f,Pzz);
title('滤波后信号频谱图');
xlabel('频率(Hz)');
ylabel('功率谱');
xlim([0,fs/2]);
```
阅读全文