【问题标题】:Accessing an element that is within a symbolic matrix访问符号矩阵中的元素
【发布时间】:2021-11-17 13:18:00
【问题描述】:

我在 MATLAB 中创建了一个 3x3 矩阵,其中矩阵的每个元素都是一个列向量。当我尝试访问矩阵中的列向量之一的元素时,我遇到了一些困难。

syms a b c real

Cube = sym('K', [3,3])

K1_1 = [a; b; c];
K1_2 = [a; b; c];
K1_3 = [a; b; c];
K2_1 = [a; b; c];
K2_2 = [a; b; c];
K2_3 = [a; b; c];
K3_1 = [a; b; c];
K3_2 = [a; b; c];
K3_3 = [a; b; c];

for i = 1:3
    for j = 1:3
        x = Cube(i,j);
        K1_1(3,1) % this does not give an error
        x
        x(3,1) % this gives an error
    end
end

这是上面代码的输出:

Cube =
 
[ K1_1, K1_2, K1_3]
[ K2_1, K2_2, K2_3]
[ K3_1, K3_2, K3_3]
 
 
ans =
 
c
 
 
x =
 
K1_1
 
Error using sub2ind (line 52)
Out of range subscript.

Error in sym/subsref (line 766)
                R_tilde = sub2ind(size(L), Idx.subs{:});

Error in MainSimFile2 (line 22)
        x(3,1)

我成功地将x 设置为矩阵的一个元素,它是一个列向量。但是,当我尝试访问列向量的元素时出现错误。

如何设置这个矩阵?

【问题讨论】:

    标签: matlab matrix symbolic-math


    【解决方案1】:

    the document所写

    Cube = sym('K', [3,3]) 创建一个 3×3 符号矩阵,其中填充了自动生成的元素。生成的元素不会出现在 MATLAB 工作区中。

    例如,

    >> clear all
    >> Cube = sym('K', [3,3])
     
    Cube =
     
    [K1_1, K1_2, K1_3]
    [K2_1, K2_2, K2_3]
    [K3_1, K3_2, K3_3]
     
    >> whos
      Name      Size            Bytes  Class    Attributes
    
      Cube      3x3                 8  sym
    
    

    换句话说,K1_1 分配者

    K1_1 = [a; b; c];
    

    K1_1 不一样

    Cube =
     
    [ K1_1, K1_2, K1_3]
    [ K2_1, K2_2, K2_3]
    [ K3_1, K3_2, K3_3]
    

    或分配给x的人

    x = Cube(i,j);
    

    因此,这一行实际上是在声明一个新变量K1_1

    K1_1 = [a; b; c];
    

    另见this answer

    【讨论】:

    • 好的,谢谢!是的,我知道 x 被分配了一个新值。在这种情况下,创建向量矩阵的最佳方法是什么?
    • 这取决于你要使用什么矩阵。这里有两组符号,即Ka, b, c。你真的需要所有这些吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多