Что не так с этим для команды цикла в MATLAB (исключая индекс) - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь исключить индекс в цикле for. Я не могу понять, почему следующий код продолжает выдавать ошибку:

for(l=1:Nmax, l~=m)

Ошибка

Ошибка: файл: BARW2Dwithducts.m Строка: 76 Колонка: 24 Несбалансированные или неожиданные скобки или скобки.

Я не вижу, как выражение не сбалансировано (сам код работает нормально и без ошибок, если я просто использую for l=1:Nmax, но это не дает мне то, что мне нужно ...

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Чтобы пропустить индекс, типичный вариант - поместить в цикл следующее (как первое):

if (l == m)
   continue
end

Другой вариант - сгенерировать все индексы, а затем удалить целевой:

allInds = 1:Nmax;
allInds(allInds == m) = []; % remove index m.
for l = allInds
...

Это имеет приятное преимущество, заключающееся в том, что вы можете четко видеть все индексы, которые будут посещены до того, как цикл начнется, и когда вы начнете добавлять дополнительные условия, это масштабируется гораздо лучше, чем ужасное гнездо условий внутри цикла.

0 голосов
/ 29 июня 2018

Один из способов пропустить значение m состоит в следующем:

for l=[1:m-1,m+1:Nmax]
   % ...
end

Обратите внимание, что это не будет работать, если m-1>Nmax, так как вы увидите значения, превышающие Nmax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...