登录论坛

查看完整版本 : [MATLAB基础] 请教高手帮忙解释小波分析程序


小文
2009-05-04, 21:23
下面程序是处理的一个相关信号,和求解尺度系数和小波系数。但是具体每句程序的含义不甚了解,请教高手们给予注释哈,本人不胜感激!
points=4096; level=4; sr=360;
%读入ECG信号
load ecgdata.mat;
ecgdata=mydata';
plot(ecgdata(1:points));grid on;axis tight;axis([1,points,-2,5]);
title('ECG信号');

swa=zeros(4,points);
swd=zeros(4,points);
signal=ecgdata(0*4096+1:1*4096);

for i=1:points-3
swa(1,i+3)=1/4*signal(i+3-2^0*0)+3/4*signal(i+3-2^0*1)+3/4*signal(i+3-2^0*2)+1/4*signal(i+3-2^0*3);
swd(1,i+3)=-1/4*signal(i+3-2^0*0)-3/4*signal(i+3-2^0*1)+3/4*signal(i+3-2^0*2)+1/4*signal(i+3-2^0*3);
end
j=2;
while j<=level
for i=1:points-24
swa(j,i+24)=1/4*swa(j-1,i+24-2^(j-1)*0)+3/4*swa(j-1,i+24-2^(j-1)*1)+3/4*swa(j-1,i+24-2^(j-1)*2)+1/4*swa(j-1,i+24-2^(j-1)*3);
swd(j,i+24)=-1/4*swa(j-1,i+24-2^(j-1)*0)-3/4*swa(j-1,i+24-2^(j-1)*1)+3/4*swa(j-1,i+24-2^(j-1)*2)+1/4*swa(j-1,i+24-2^(j-1)*3);
end
j=j+1;
end
subplot(level,1,1); plot(ecgdata(1:points)); grid on;axis tight;
title('ECG信号及其在j=1,2,3,4尺度下的尺度系数及小波系数');

小文
2009-05-04, 21:25
不知道怎么传上去就有这么多的图像,不过还是请朋友们帮我看看!谢谢了

yhcode
2009-05-05, 09:31
你的程序主要是弄清SWA SWD是什么,你用循环卷积实现滤波,也就是将小波低通高通滤波器(4taps FIR)对原始信号进行滤波得到SWA和SWD,之后如果级数大于1的话,从第二级开始对SWA(上一级的低通信号)进行小波变换.依此类推.

小文
2009-05-05, 11:27
谢谢楼上朋友的指点,再好好研究下1:)