Цикл For для определенного диапазона чисел в Matlab

#matlab #for-loop

#matlab #for-цикл

Вопрос:

Я хочу выполнить цикл for в matlab только для определенных чисел. моя проблема в том, что я хочу, чтобы они возвращались как 5 разных матриц 3×3, но мой код возвращает только одну матрицу 15×3. вот мой код:

 for a = [0;10;20;30;45]

   T = [ cosd(a).^2 sind(a).^2   -sind(2*a);
       sind(a).^2   cosd(a).^2   sind(2*a);
       .5*sind(2*a)    -.5*sind(2*a)   cosd(2*a)];
end
  

Спасибо

Ответ №1:

Ошибка, которую вы делаете, заключается в том, что ваш код не принимает каждое значение a отдельно. Он принимает его как вектор, и ваш for цикл здесь ничего не делает. Вот как это можно исправить:

 a = [0;10;20;30;45];

T = zeros(3,3,5);    %Pre-allocation
for k=1:numel(a)  
   T(:,:,k) = [  cosd(a(k)).^2       sind(a(k)).^2    -sind(2*a(k));
                 sind(a(k)).^2       cosd(a(k)).^2     sind(2*a(k));
               .5*sind(2*a(k))    -.5*sind(2*a(k))     cosd(2*a(k)) ];
end