(X^2)(1,2)
X
是一个方形矩阵,我只想从(1,2)
的位置(X^2)
获取元素,为什么它不起作用?
答案 0 :(得分:4)
这不是Matlab的工作方式。您需要将矩阵乘法的结果分配给另一个矩阵,然后使用它:
A = X^2;
disp(A(1,2));
这假设您确实意味着要进行矩阵乘法,而不是逐个元素地乘法。在后一种情况下,你可以做到
disp(X(1,2)^2)
如果您对矩阵乘法结果感兴趣,那么
disp(X(1,:)*X(:,2))
会这样做,因为这就是元素(1,2)
的计算方法。最后一个解决方案具有非常高效的优势,因为您只计算所需的元素,而不是计算整个矩阵并抛出N^2-1
元素以保留它。对于更大的矩阵来说会有所作为。当然它会使代码的可读性稍差,所以我总是建议你在代码中写一个注释 - 你未来的自己会感谢你......
编辑看看http://www.mathworks.com/matlabcentral/newsreader/view_thread/235798 - 该线程广泛赞同我的第一个声明,尽管它暗示您希望的语法可能是“未来版本的一部分”。但是6年前就已经说过,它仍然不在这里......它也显示了一些相当模糊的解决方法;我建议不要去那条路线(因为所有的解决办法都是隐藏你计算矩阵的事实,然后选择一个元素。所以计算机上的工作量不小。)
答案 1 :(得分:4)
在这种情况下,语法上不允许索引。最简单的解决方法是使用getfield
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