Некоторые проблемы с доступом к отдельным элементам в MATLAB - PullRequest
0 голосов
/ 08 февраля 2012
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]
[ 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 Ответ

1 голос
/ 08 февраля 2012

Работает нормально для меня (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

РЕДАКТИРОВАТЬ: Как вы видите, R2011a дает ожидаемые результаты.Тем не менее, я только что проверил это на R2010a (версия OP) и также получил ваши результаты ... так что вам, вероятно, нужно обновление:)

...