✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
????个人主页:Matlab科研工作室
????个人信条:格物致知。
更多Matlab仿真内容点击????
⛄ 内容介绍
在目前的工程信号或者是数据测试中,因为混杂着各种各样的干扰成分,所以在后续的信号分析以及处理中会出现比较大的误差或者是错误,这种情况严重影响了信号测试的质量.出于对测试信号中具有特征的信息数据进行快速并准确的提取的要求,对测试数据信号样本进行预处理有着重要的作用.在结合压力自动控制系统的基础上,使用粒子滤波器与FBS、MAP算法对测试样本进行平滑处理。
⛄ 部分代码
function [psi,delta,xmap,wstilda4,wstilda5]=mapsmoother(a,b,c,d,X20,xf,wftilda,y)
[n,T]=size(xf);
%Initialization
delta(:,1)=X20;
%Recursion
for t=2:T
for j=1:n
delta(j,t)=log(normpdf(y(t),my(c,xf(j,t)),d))+max(delta(:,t-1)+log(normpdf(xf(j,t),mx(a,xf(:,t-1)),b)));
[h,psi(j,t)]=max(delta(:,t-1)+log(normpdf(xf(j,t),mx(a,xf(:,t-1)),b)));
end
end
%Termination
[m,iter(T)]=max(delta(:,T));
xmap(T)=xf(iter(T),T);
for i=1:n
ws5(i,T)=wftilda(i,T)*weight(xmap(T),xf(:,T),1,wftilda(:,T),i,a,b);
end
wstilda5(:,T)=ws5(:,T)/sum(ws5(:,T));
%Backtracking
for t=T-1:-1:1
iter(t)=psi(iter(t+1),t+1);
xmap(t)=xf(iter(t),t);
for i=1:n
ws4(i,t)=wftilda(i,t)*weight(xmap(t+1),xf(:,t),1,wftilda(:,t),i,a,b);
ws5(i,t)=wftilda(i,t)*weight(xmap(t),xf(:,t),1,wftilda(:,t),i,a,b);
end
wstilda4(:,t)=ws4(:,t)/sum(ws4(:,t));
wstilda5(:,t)=ws5(:,t)/sum(ws5(:,t));
end
⛄ 运行结果
⛄ 参考文献
[1]韩长军. 基于MATLAB的语音信号去噪方法应用[J]. 辽东学院学报:自然科学版, 2017, 24(1):6.