Связать строку с переменной итеративно - matlab

Я загружаю свои файлы.txt из каталога, в котором содержатся матрицы 4x4, непосредственно в переменную (rotLM) со следующим кодом в октаве:

  for i= 1:5
    file_rotLM= strcat('C:\Users\pc\Desktop\matrices\rotLM',int2str  (i),'.txt'); 
    rotLM= strcat('rotLM',int2str(i))
    rotLM= load(file_rotLM);
  end

Что я хочу: имя переменной "rotLM" должно содержать объединенную строку в конце. Например: "rotLM1, rotLM2...rotLM5" и каждая из этих переменных должна содержать соответствующие параметры матрицы. Если я запускаю код выше, я получаю только:

 rotLM = rotLM1
 rotLM = rotLM2
 rotLM = rotLM3
 rotLM = rotLM4
 rotLM = rotLM5

И если я опрокидываю командное окно: rotLM, это дает мне только последнюю прочитанную матрицу, но если я ввожу, например, rotLM1, я получаю ошибку "rotLM1" undefined возле строки 1, столбец 1 "

В чем моя ошибка здесь? Спасибо!

1 ответ

Решение

НИКОГДА не вставляйте индексы в имя вашей переменной, предполагая, что вы сделали это в первую очередь, в результате вы получите код, который ужасно поддерживать. Например, нет итератора для таких переменных. Вместо этого используйте массив ячеек:

n=5
rotLM=cell(n,1);  
for ix= 1:5
    file_rotLM= strcat('C:\Users\pc\Desktop\matrices\rotLM',int2str(ix),'.txt'); 
    rotLM{ix}= load(file_rotLM);
end
Другие вопросы по тегам