вы, наверное, имели в виду
X = ['a','b','c','d']
(в квадратных скобках), так X
является массив символов (строка), а не массив ячеек
проблема заключается в том, что в цикле удалить одну запись от X
, поэтому X
оставлен с 3
вводами. Таким образом, когда вы пытаетесь получить доступ к своей записи 4
(на итерации i=4
), вы получите сообщение об ошибке.
Это происходит из-за того, что условие выхода for
равно , которое не подвергалось повторной оценке на каждой итерации. В for
заявлении вы говорите, что i
должен бежать от 1
к 4
(4
это значение length(X)
в то время), и это то, что происходит.
Для достижения желаемого вам, вероятно, необходим цикл while
.Условие while
-loop равно , оцениваемое после каждой итерации, используя текущие значения для переменных, чтобы определить, должна ли произойти новая итерация или нет. Таким образом, в следующем коде только 3
итерации происходит, и вы не получите никаких ошибок:
i = 1;
while i<=length(X)
if X(i) == 'a'
X(i) = [];
else
i = i + 1;
end
end
Счетчик i
должен увеличиваться только тогда, когда ни один элемент X
не был удален. Благодаря @matlabgui для улова.
Я не» Теперь у меня есть Matlab, но я проверю, что сегодня, интересно ...;) –
Какова длина region_L? – GameOfThrows
до длины цикла (region_L) = 11 – Devel