2016-01-17 2 views
0
for i=1:1:4 
    T=[(cos(x(i)))^2 (sin(x(i)))^2 2*(cos(x(i)))*(sin(x(i)));(sin(x(i)))^2 (cos(x(i)))^2 -2*(cos(x(i)))*(sin(x(i))) ;-(cos(x(i)))*(sin(x(i))) (cos(x(i)))*(sin(x(i))) (cos(x(i)))^2-(sin(x(i)))^2 ;]; 
    XXXXX=inv(T)*Qq*R*T*inv(R); 
end 

Я хочу назвать XXXXX согласно i; Я имею в виду, что когда i=1 работает, XXXXX будет переменным Q1, а i=2 будет Q2, и дальше и дальше.Названия достоверных в соответствии с Индекс петли

+1

Я думаю, что вы будете использовать ВПО 'Eval()' что-то вроде этого. – AnonSubmitter85

+1

У вас есть конкретная причина, чтобы сделать это insteand поместить его в массив 'Q {i}'? –

+1

Вам не нужны эти имена. Это называется использованием «Именование динамических переменных» и считается [очень плохой практикой] (http://stackoverflow.com/questions/32467029/how-to-put-these-images-together/32467170#32467170). См. Связанный пост для получения дополнительной информации о том, почему, и см. Ответ Дэниела для правильного способа хранения переменных. – Adriaan

ответ

2

possible but not recommended использовать имена переменных Q1 Q2 Q3. Ссылка объясняет, почему это не рекомендуется и как ее реализовать.

Вместо этого используйте cell array для хранения результатов:

n=4; % or probably better n=numel(x) 
Q=cell(n,1); 
for i=1:1:4; 
    T=[(cos(x(i)))^2 (sin(x(i)))^2 2*(cos(x(i)))*(sin(x(i)));(sin(x(i)))^2 (cos(x(i)))^2 -2*(cos(x(i)))*(sin(x(i))) ;-(cos(x(i)))*(sin(x(i))) (cos(x(i)))*(sin(x(i))) (cos(x(i)))^2-(sin(x(i)))^2 ;]; 
    Q{i}=inv(T)*Qq*R*T*inv(R); 
end 
+1

Я планирую сделать это, но он дал мне ошибку, что вектор не может быть матрицей 3X3. Вместо этого я создал 3D-матрицу –

+0

Если 3D-матрица возможна, она лучше, потому что более быстрый выбор. Я не был уверен, является ли результат каждой итерации матрицей такого же размера, поэтому предлагает более общее решение, которое применяется в любом случае. – Daniel