我的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 一批图像处理问题