2012-02-08 4 views
0
syms t theta chy sy real; 
A = [0 0 0 0; 0 -theta -0.5 0;0 -0.5 0 0;0 0 0 0]; 
B = [0 theta/2 0.5 0; theta/2 0 0 0;0.5 0 0 0;0 0 0 0]; 
C = [0 (1-(theta^2))/2 -(theta/2) 0;(1-(theta^2))/2 0 0 0; -(theta/2) 0 0 0;0 0 0 0]; 
D = sym(zeros(4,4)); 
CS = cat(3,A,B,C,D); 

Теперь, когда я печатаюНекоторые проблемы с доступом к отдельным элементам в MATLAB

>> CS(:,1,3) 

ans = 

[    0, 1/2 - theta^2/2, -theta/2, 0] 
[ 1/2 - theta^2/2,    0,  0, 0] 
[  -theta/2,    0,  0, 0] 
[    0,    0,  0, 0] 

>> CS(:,:,3) 

ans = 

[    0, 1/2 - theta^2/2, -theta/2, 0] 
[ 1/2 - theta^2/2,    0,  0, 0] 
[  -theta/2,    0,  0, 0] 
[    0,    0,  0, 0] 

который, как предполагается, будет отличаться от CS(1,1,3) и CS(:,1,3).

>> CS(1,1,3) 

ans = 

[    0, 1/2 - theta^2/2, -theta/2, 0] 
[ 1/2 - theta^2/2,    0,  0, 0] 
[  -theta/2,    0,  0, 0] 
[    0,    0,  0, 0] 

Все значения дают одинаковые значения. Как получить доступ к первому значению в этой конкретной матрице. Я не хочу использовать матрицы A/B/C.

ответ

1

Это работает хорошо для меня (R2011a):

syms t theta chy sy real; 
A = [0 0 0 0; 0 -theta -0.5 0;0 -0.5 0 0;0 0 0 0]; 
B = [0 theta/2 0.5 0; theta/2 0 0 0;0.5 0 0 0;0 0 0 0]; 
C = [0 (1-(theta^2))/2 -(theta/2) 0;(1-(theta^2))/2 0 0 0; -(theta/2) 0 0 0;0 0 0 0]; 
D = sym(zeros(4,4)); 
CS = cat(3,A,B,C,D); 

>> CS(:,1,3) 

ans = 

       0 
1/2 - theta^2/2 
     -theta/2 
       0 

>> CS(:,:,3) 

ans = 

[    0, 1/2 - theta^2/2, -theta/2, 0] 
[ 1/2 - theta^2/2,    0,  0, 0] 
[  -theta/2,    0,  0, 0] 
[    0,    0,  0, 0] 

>> CS(1,1,3) 

ans = 

0 

EDIT: Как вы видите, R2011a дает ожидаемые результаты. Тем не менее, я только что проверил его на R2010a (версия OP), а также получил ваши результаты ... так что вам, вероятно, потребуется обновление :)

+0

Не могли бы вы уточнить, какую версию MATLAB вы используете. Потому что это дает мне приведенные выше ответы для v r2010a. – Naresh

+0

Я использовал MATLAB R2011a. Я только что проверил его на R2010a, а также получил ваши результаты ... так что вам, вероятно, потребуется обновление :) –

+0

Хорошо, спасибо за ответ. Извините за отсутствие голосов :) – Naresh

Смежные вопросы