声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1461|回复: 2

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

[复制链接]
发表于 2009-5-15 11:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
load 3;
b=X;
b=b';
L=length(b);
f=2e+6;
%做5层小波分解
[c,l]=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);
回复
分享到:

使用道具 举报

发表于 2009-5-15 13:59 | 显示全部楼层
最好把你要调试的初始数据贴出来 这样方便大家调试
index exceed matrix dimensions 应该是你的矩阵维数或数组长度等等有问题

评分

1

查看全部评分

发表于 2009-5-15 14:13 | 显示全部楼层
参见:http://forum.vibunion.com/forum/thread-46001-1-1.html
建议楼主自己调试,这个问题很容易解决。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 17:48 , Processed in 0.066307 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表