【问题标题】:Some problems with accessing individual elements in MATLAB在 MATLAB 中访问单个元素的一些问题
【发布时间】:2012-02-29 22:42:59
【问题描述】:
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 矩阵。

【问题讨论】:

    标签: matlab multidimensional-array indexing symbolic-math


    【解决方案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
    

    编辑:如您所见,R2011a 给出了预期的结果。但是,我刚刚在 R2010a(OP 的版本)上检查了它并且也得到了你的结果......所以你可能需要升级:)

    【讨论】:

    • 您能否说明您使用的是哪个版本的 MATLAB。因为这为我提供了 v r2010a 的上述答案。
    • 我使用了 MATLAB R2011a。我刚刚在 R2010a 上检查过,也得到了你的结果......所以你可能需要升级 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多