|
我也在做连续小波重构的算法,看到部分论文中用它来消噪,可以较大程度地保留弱信号,按照matlab中实现CWT的算法编写了icwt的算法,但是效果不是很好,还未找到原因。
算法如下:
%连续小波变换的积分卷积算法
load SimulatedDataPart5;
fs=1000;
Scale=1:30;
tempVectorScale=Scale.^(-0.5);
N=length(x);
t=(0:N-1)/fs;
plot(t,x);title('原始波形');axis tight;
tMin=t(1);tMax=t(N);
[psi,t]=morlet(tMin,tMax,N);
WaveName='morl';
[WaveletInt,tVal]=intwave(WaveName,10); %求指定小波函数的积分
tVal=tVal-tVal(1);
stepWAV=tVal(2)-tVal(1);
xMaxWAV=tVal(end);
WaveletTraScale=[];WaveletTraM2=[];
CWT=cwt(x,Scale,'morl');
ReSiganlM=[];
%仿matlab中实现CWT的算法过程
for k=1:length(Scale)
a=Scale(k);
a_SIG=a;
j=[1+floor([0:a_SIG*xMaxWAV]/(a_SIG*stepWAV))];
f=fliplr(WaveletInt(j));
ReSignalM(k,:)=-wkeep1(diff(wconv1(CWT(k,:),f)),N)/(a^2);
end
ReSignal=sum(ReSignalM);
hold on;
plot(t,ReSignal,'r-');
%求容许性参数
f=(1:N)*fs/N;
XAmp=2*abs(fft(x))/N;
XPower=XAmp.^2;
tempV=XPower./f;
Cw=2*sum(tempV)*(f(2)-f(1));
ReSignal=ReSignal/Cw;
hold on;
plot(t,ReSignal,'g-');
%求互相关系数
CorrelationCoefs=corrcoef(x,ReSignal);
[ 本帖最后由 diagnosis 于 2008-11-14 21:47 编辑 ] |
|