2013-05-02 30 views
-1

在MATLAB中,我可以很容易地得到一个矩阵的列主要为了使用(:)操作如下元素的矢量...在MATLAB中,为什么我不能编写转置和冒号操作符?

EDU>> A 

A = 

    1  2 
    3  4 
    5  6 

EDU>> A(:) 

ans = 

    1 
    3 
    5 
    2 
    4 
    6 

不过,我想获得的元素的矢量按行排列。所以我想我会在使用(:)之前转置矩阵。但我得到这个错误...

EDU>> A'(:) 
A'(:) 
    | 
Error: Unbalanced or unexpected parenthesis or bracket. 

为什么不和'和(:)写在这里?我可以在2个步骤中完成,但我更愿意更简洁并避免额外的变量。

EDU>> B = A' 

B = 

    1  3  5 
    2  4  6 

EDU>> B(:) 

ans = 

    1 
    2 
    3 
    4 
    5 
    6 

为什么我不能通过编写'和(:)来做到这一点?什么是正确的方法来做到这一点?

感谢, 〜夹头

+5

这基本上是[这个问题]的副本(http://stackoverflow.com/q/2724020/52738)。此外,[这个相关的问题](http://stackoverflow.com/q/3627107/52738)进一步说明索引操作符'()'不能遵循某些操作,除非你把它变成一个函数调用。 – gnovice 2013-05-02 17:46:42

+0

谢谢,我的主要问题是关于索引操作符的第二点。有趣的是,Octave似乎没有受到这个问题的困扰。 – Chuck 2013-05-02 18:18:31

回答

3

使用重塑或许

reshape(A',prod(size(A)),1) 
+0

这有什么问题? – 2013-05-02 18:57:29

+2

似乎对我好。对不起有人投票给你。 – Chuck 2013-05-02 19:00:02

+0

我将删除我的帖子,与您的帖子相同,但较早。周围有人不开心。如果答案不完全是他们想要的,他们为什么要轻易给人一个倒退。 – NKN 2013-05-02 19:08:52

相关问题