Я написал код, который находит первый нуль, сравнивает значения до и после нуля и удаляет нуль и меньшее число. Но я не понимаю, почему я получаю сообщение об ошибке:Чистый вектор с петлей
Index exceeds matrix dimensions.
Error in bereinigen (line 9) C1=L(A1+1);
L=[-300 100 0 200 -100 100 0 -300 ];
A3=find(L==0);
U=length(A3);
for x=1:U
A1=A3(x);
C1=L(A1+1);
C2=L(A1-1);
B1=sign(C1);
B2=sign(C2);
if B1==B2
D1=min(C1,C2);
if D1==C1
L(A1+1)=[];
E1=find(L==0);
E1=E1(1);
L(E1)=[];
elseif D1==C2
L(A1-1)=[];
E1=find(L==0);
E1=E1(1);
L(E1)=[];
end
else
return
end
end
Благодарим за помощь
Вы удаляете элементы из 'L', поэтому индексы, заданные' A3', могут ссылаться на позиции за пределами 'L', если вы удаляете достаточно значений, поскольку вы только вычисляете' A3' из * всего * vector – Suever
ах да, Ты прав! Спасибо – jdoubleu