blacklabel 发表于 2009-5-15 11:40

跪求大侠帮忙解决这个问题,matlab运行后老是显示index exceed matrix dimensions

load 3;
b=X;
b=b';
L=length(b);
f=2e+6;
%做5层小波分解
=wavedec(b,5,'coif4');   
%重构尺度1,2,3,4,5的高频系数
cd1=wrcoef('d',c,l,'coif4',1);   
cd2=wrcoef('d',c,l,'coif4',2);
cd3=wrcoef('d',c,l,'coif4',3);
cd4=wrcoef('d',c,l,'coif4',4);
cd5=wrcoef('d',c,l,'coif4',5);
d1=zeros(1,5120);
d2=zeros(1,5120);
d3=zeros(1,5120);
d4=zeros(1,5120);
d5=zeros(1,5120);
%计算尺度1、2的相关系数,求尺度1上降噪后系数
cor1=cd1.*cd2;
pcd1=sum(cd1.^2);
pcor1=sum(cor1.^2);
ncor1=cor1*sqrt(pcd1/pcor1);
abscd1=abs(cd1);
absnc1=abs(ncor1);
for i=1:L
    if(absnc1(i)>=abscd1(i))
      d1(i)=cd1(i);
    end
end
%计算尺度2、3的相关系数,求尺度2上降噪后系数
cor2=cd2.*cd3;
pcd2=sum(cd2.^2);
pcor2=sum(cor2.^2);
ncor2=cor2*sqrt(pcd2/pcor2);
abscd2=abs(cd2);
absnc2=abs(ncor2);
for i=1:L
    if(absnc2(i)>=abscd2(i))
      d2(i)=cd2(i);
    end
end
%计算尺度3、4的相关系数,求尺度3上降噪后系数
cor3=cd3.*cd4;
pcd3=sum(cd3.^2);
pcor3=sum(cor3.^2);
ncor3=cor3*sqrt(pcd3/pcor3);
abscd3=abs(cd3);
absnc3=abs(ncor3);
for i=1:L
    if(absnc3(i)>=abscd3(i))
      d3(i)=cd3(i);
    end
end
%计算尺度4、5的相关系数,求尺度4上降噪后系数
cor4=cd4.*cd5;
pcd4=sum(cd4.^2);
pcor4=sum(cor4.^2);
ncor4=cor4*sqrt(pcd4/pcor4);
abscd4=abs(cd4);
absnc4=abs(ncor4);
for i=1:L
    if(absnc4(i)>=abscd4(i))
      d4(i)=cd4(i);
    end
end
%尺度5
d5=cd5;
for i=1:L
    if(d4(i)==0)
      d5(i)=0;
    end
end
%重构信号
ca5=wrcoef('a',c,l,'coif4',5);
bb=d1+d2+d3+d4+d5+ca5;
figure(1)
plot(0:L-1/f,d5)
title('降噪后尺度5的重构小波系数');
xlabel('时间T/s');
ylabel('幅度Amp/V');
figure(2)
plot(0:L-1/f,d4)
title('降噪后尺度4的重构小波系数');
xlabel('时间T/s');
ylabel('幅度Amp/V');
figure(3)
plot(0:L-1/f,d3)
title('降噪后尺度3的重构小波系数');
xlabel('时间T/s');
ylabel('幅度Amp/V');
figure(4)
plot(0:L-1/f,d2)
title('降噪后尺度2的重构小波系数');
xlabel('时间T/s');
ylabel('幅度Amp/V');
figure(5)
plot(0:L-1/f,d1)
title('降噪后尺度1的重构小波系数');
xlabel('时间T/s');
ylabel('幅度Amp/V');
figure(6)
plot(0:L-1/f,bb)
title('小波变换尺度间相关性降噪后的基材开裂信号');
xlabel('时间T/s');
ylabel('电压U/V');
%求均方根误差
err=norm(b-bb)/sqrt(L);
%求降噪后信号在原信号中的能量成分
per=sum(bb.^2)/sum(b.^2);

hlylabfans 发表于 2009-5-15 13:59

最好把你要调试的初始数据贴出来 这样方便大家调试
index exceed matrix dimensions 应该是你的矩阵维数或数组长度等等有问题

friendchj 发表于 2009-5-15 14:13

参见:http://forum.vibunion.com/forum/thread-46001-1-1.html
建议楼主自己调试,这个问题很容易解决。
页: [1]
查看完整版本: 跪求大侠帮忙解决这个问题,matlab运行后老是显示index exceed matrix dimensions