PCA去噪--一维正弦信号去噪(高斯白噪声)

近期发现大家对PCA去噪关注挺多的,先提前跟大家说好,代码一律50,希望大家尊重科研成果,不要白嫖,不想购买的也不要浪费彼此时间了。

若需要的请联系286820790希望对大家有帮助,熬夜写文章,希望大家不要白嫖。给个赞,以后会更新。

1.序言

目前,CSDN以及PUDN论坛上的代码,很少关于PCA进行信号滤波以及信号去噪的,而大多数关于用PCA降维处理.自己也搜了半天的文章发现只有完美的理论讲解,也没有相关的代码。我就根据PCA原理结合高斯白噪声,写了关于PCA去噪方法以及MATLAB代码:正弦信号+高斯白噪声通过PCA方法去除高斯白噪声,还原一维正弦信号。

PCA去噪相关原理大家可以看这篇文章:PCA进行信号滤波icon-default.png?t=N7T8https://www.cnblogs.com/bjwu/p/8970823.html

2.PCA原理(待补充)

3.PCA计算步骤(待补充)

4.MATLAB代码实现

为了与文章相贴合我们采用推荐文章中给的信号例子:三个频率不同且幅值相位不相同的余弦函数之和,20,30,50HZ,幅值分别为1,2,3。噪声信号为高斯白噪声,我们现在要用主成分分析将高斯白噪声从x(t)中滤掉。

4.1噪声模型

x(t)= \cos \left(20t\right)+2\cos \left(30t\right)+3\cos \left(50t\right)+n(t)

其中噪声方差分为取0.1,1以及5来验证算法有效性,MATLAB噪声代码是

noise=0.1*randn(size(st1));

noise=0.1*randn(size(st1)); %方差0.1
noise=1*randn(size(st1)); %方差1
noise=5*randn(size(st1)); %方差5

4.2 仿真结果

图1 PCA去噪方差为0.1
图1 PCA去噪方差为1
图1 PCA去噪方差为5

从三种不同噪声方差下可以看出,噪声小的可以完全恢复出信号,随着噪声功率增加PCA信号恢复出现失真。具体的大家可以做出SNR图来观看。

clc;clear all;close all
%% Simulate data

dt=0.001;
t=0:dt:1-dt;
st=1*cos(2*pi*20*t)+2*cos(2*pi*30*t)+1*cos(2*pi*50*t);

% 20 30,50HZ,幅值分别为1,2 3

sigma=0.1;%噪声方差0.1 1 5


%%PCA函数代码已经隐藏,希望大家不要白嫖可以联系我286820790或邮箱286920790@qq.com
[eig_ts, V,S,N]=PCA_denoising(st,sigma) ;


%% Plotting time

% time series
figure(1)
% subplot(2,1,2)
plot(t,eig_ts/10,"r-")
hold on;
plot(t,st,"b.")
xlabel('Time (norm.)')
title('噪声方差0.1')
legend({'PCA恢复 ';'原始信号'})
zoom on

5.公众号获取代码

大家可以关注公众号,如果需要购买,发送关注截图后,8折优惠

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科研Beatles

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

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

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

打赏作者

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

抵扣说明:

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

余额充值