当前位置:编程学习 > Matlab >>

我的matlab程序总是index out of bounds?求详细解答~

做毕设,用matlab对数据进行小波变换处理。从师兄那拷了个程序。 function [LocMax,Kmax] = localmax1(s,N0); LocMax=zeros(1,N0); wabs=abs(s); for k=3:N0-2 if wabs(k-2)<wabs(k-1)&wabs(k-1)<wabs(k)&wabs(k)>=wabs(k+1)&wabs(k+1)>=wabs(k+2) LocMax(k)=s(k); end end Max1=LocMax(1); Kmax1=k; for k=2:N0 if abs(Max1)<=abs(LocMax(k)) Max1=LocMax(k); Kmax1=k; end end Max2=LocMax(Kmax1+1); Kmax2=Kmax1+1; for k=(Kmax1+2):N0 if abs(Max2)<=abs(LocMax(k)) Max2=LocMax(k); Kmax2=k; end end Max3=LocMax(Kmax2+1); Kmax3=Kmax2+1; for k=(Kmax2+2):N0 if abs(Max3)<=abs(LocMax(k)) Max3=LocMax(k); Kmax3 =k; end end Max4=LocMax(Kmax3+1); Kmax4=Kmax3+1; for k=(Kmax3+2):N0 if abs(Max4)<=abs(LocMax(k)) Max4=LocMax(k); Kmax4=k; end end Kmax=[Kmax1,Kmax2,Kmax3,Kmax4]; 主程序:s=cwt(vX0023a,0.5,'gaus1'); N0=1000; [LocMax,Kmax]=localmax1(s,N0);zero=zeros(1,N0); k=1:N0/2; figure(1); subplot(311);plot(k,vX0023a(k),k,zero(k),'r-'); subplot(312);plot(k,s(k),k,zero(k),'r-'); subplot(313);plot(k,LocMax(k),k,zero(k),'r-'); 其中vX0023a是一个波形,workplace显示是<2001*1 double>,s经过变换是<1*2001 double>。 图片是workspace的情况。 但是无论我把NO设置为多少,它都显示 “Attempted to access LocMax(1001); index out of bounds because numel(LocMax)=1000”,快郁闷死了,求助啊!
答案:Max2=LocMax(Kmax1+1);%%Kmax1加1
Kmax2=Kmax1+1;
Max3=LocMax(Kmax2+1);%%Kmax2加1
Kmax3=Kmax2+1;
Max4=LocMax(Kmax3+1);%%Kmax3加1
Kmax4=Kmax3+1;
%%总共加了三次,那么当前两次的最大值恰好在NO-2时,到了第三次加1,就为NO+1,越界。
楼主试下把for k=3:N0-2这里改成for k=3:N0-3试试!

上一个:请问谁会用matlab生成符合高斯函数的数据?谢谢~
下一个:matlab 一批图像处理问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,