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

时间:2014-04-26 01:28:57

标签: matlab

(X^2)(1,2)

X是一个方形矩阵,我只想从(1,2)的位置(X^2)获取元素,为什么它不起作用?

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