我的简单matlab代码有什么问题

我的简单matlab代码有什么问题,matlab,Matlab,X是一个方阵,我只想从(1,2)位置得到元素,从(X^2)为什么它不工作?Matlab不是这样工作的。您需要将矩阵乘法的结果分配给另一个矩阵,然后使用它: (X^2)(1,2) 这是假设你真的想做矩阵乘法,而不是一个元素一个元素的乘法。在后一种情况下,你本可以这样做的 A = X^2; disp(A(1,2)); 若你们对矩阵相乘的结果感兴趣,那个么 disp(X(1,2)^2) 将这样做,因为这就是元素(1,2)的计算方式。最后一个解决方案的优点是非常有效,因为您只计算所需的元素,而不是

X
是一个方阵,我只想从
(1,2)
位置得到元素,从
(X^2)
为什么它不工作?

Matlab不是这样工作的。您需要将矩阵乘法的结果分配给另一个矩阵,然后使用它:

(X^2)(1,2)
这是假设你真的想做矩阵乘法,而不是一个元素一个元素的乘法。在后一种情况下,你本可以这样做的

A = X^2;
disp(A(1,2));
若你们对矩阵相乘的结果感兴趣,那个么

disp(X(1,2)^2)
将这样做,因为这就是元素
(1,2)
的计算方式。最后一个解决方案的优点是非常有效,因为您只计算所需的元素,而不是计算整个矩阵,然后扔掉
N^2-1
元素以保留一个元素。对于更大的矩阵,这将产生不同。当然,这会使代码的可读性稍差一些,所以我总是建议您在这样做时在代码中写一条注释-您未来的自己会感谢您


edit看一看——这篇文章大体上同意我的第一句话,尽管它暗示你想要的语法可能是“未来版本的一部分”。但这是6年前说的,现在还没有出现。。。它还显示了一些相当模糊的变通方法;我建议不要这样做(因为所有的解决方法都是隐藏计算矩阵的事实,然后只选择一个元素。因此计算机上的工作量不会更小。)

在这种情况下,语法上不允许索引。最简单的解决方法是使用
getfield

disp(X(1,:)*X(:,2))

我只想要(A*A)(1,2),不知道为什么matlab会给我的代码一个错误?它会给我一个错误,因为
(A*A)
不是一个可以索引的对象。这就是语法的工作方式。但是我的第三个选择应该做你想做的事情,并且效率很高。现在我看到它已经出现了,但我没有意识到
X=magic(5)

X =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> getfield(X^2,{1,3})

ans =

   725