低通滤波降噪

举例:原始低频信号

f(x) = \frac{1}{1 + (x-1)^{6}+0.02x}

原始信号图像:

 

原始信号频谱图:

 

噪声信号:

%% 加噪(高斯白噪声)
sigma = 0.01; %噪声方差
noisy = normrnd(0,sigma,1,length(x));

噪声频谱图:

加噪后信号:

构造低通滤波:

%%将7以后的频点的权值全设置为0,构建低通滤波
f2(7:193) = 0; %这里选取的主频个数未7

 降噪后信号:

工程代码:

% 峰值缓变函数最优化(去噪方法、回归方法)
clear,clc,close all
%% 构造峰值缓变函数
x = 0 : 0.01 : 2;
%y = 1 ./ ( 1 + ( (x-1).^6) ); % 巴特沃斯低通滤波函数(峰值缓变)
y = 1 ./ ( 1 + ( (x-1).^6 + 0.02 * x ) );
plot(x,y)
%最值求解
pos = find(y == max(y) ); %寻找最大值
disp([ '原始曲线 : ','最优解=' , num2str( x(pos) ) ,', 最优函数值=' , num2str( y(pos) ) ])
%% 加噪(高斯白噪声)
sigma = 0.01; %噪声方差
noisy = normrnd(0,sigma,1,length(x));
yn = y + noisy;
%最值求解
pos2 = find(yn == max(yn)); %寻找最大值
disp([ '加噪曲线 : ','最优解=' , num2str( x(pos2) ) ,', 最优函数值=' , num2str( y(pos2) ) ])
%disp(['------- 去噪方法 -------'])
%% 低通滤波去噪
f2 = fft(yn);
% 计算信号的傅里叶变换
f_signal = fft(noisy);

% 计算频率范围
L = length(y); % 信号长度
Fs = 1 / (x(2) - x(1)); % 采样频率
frequencies = Fs*(0:(L/2))/L;

% 计算幅度谱
amplitude = abs(f_signal/L);
amplitude = amplitude(1:L/2+1);

% 绘制频谱图
figure;
plot(frequencies, amplitude);
title('原信号的频谱图');
xlabel('频率 (Hz)');
ylabel('幅度');

f2(7:193) = 0; %这里选取的主频个数未7
y3 = ifft(f2);

%最值求解
pos3 = find( y3 == max(y3) );%寻找最大值
disp([ '低通滤波去噪 : ','最优解=' , num2str( x(pos3) ) ,', 最优函数值=' , num2str( y(pos3) ) ])
%% 绘图
figure,plot(x,y,'.-'),title('原始峰值缓变函数')
figure,plot(x,yn,'.-'),title('原函数加噪')
figure,plot(x,abs(y3),'.-'),title('低通滤波去噪')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super_WY_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值