Как я могу использовать вложенный цикл for для индексации этой основной проблемы

#matlab

#matlab

Вопрос:

У меня есть простая проблема с вложенной индексацией цикла for, которую я не могу решить. Я хотел бы индексировать x из 1: NaNb, используя только i и j. Поэтому я хотел бы заменить «a» в следующем коде комбинацией i и j, где он будет индексироваться от 1 до Na * Nb. Два цикла for нельзя изменить, поскольку они используются для других вычислений. Единственное, что следует изменить, это «a». Буду признателен за любые предложения. Заранее благодарю вас!

 for i = 1:Na
    for j = 1:Nb
        x(a) = ABC; 
    end
end
  

Ответ №1:

С ограничением контекста и типов / объявлений переменных, это то, что я придумал. Индекс x() вычисляется с использованием комбинации i и j .

Метод 1:

 Na = 10;
Nb = 10;

x = strings(1,Na*Nb);

for i = 1:Na
    for j = 1:Nb
        x(1,((i-1)*Na   j)) = 'ABC'; 
    end
end
  

Способ 2:

 Na = 10;
Nb = 10;

x = strings(1,Na*Nb);
Index = 1;

for i = 1:Na
    for j = 1:Nb
        x(Index) = 'ABC'; 
        Index = Index   1;
    end
end
  

Если ABC является переменной типа integer

 Na = 10;
Nb = 10;
ABC = 1;
x = zeros(1,Na*Nb);

for i = 1:Na
    for j = 1:Nb
        x(1,((i-1)*Na   j)) = ABC; 
    end
end
  

Использование версии MATLAB: R2019b

Комментарии:

1. Спасибо! Второй метод — это именно то, что я ищу. Я просто хочу сохранить от 1 до Na * Nb.