在 MATLAB 中,为啥我不能组合转置和冒号运算符? [复制]
Posted
技术标签:
【中文标题】在 MATLAB 中,为啥我不能组合转置和冒号运算符? [复制]【英文标题】:In MATLAB, why can't I compose transpose and colon operators? [duplicate]在 MATLAB 中,为什么我不能组合转置和冒号运算符? [复制] 【发布时间】:2013-04-26 23:55:57 【问题描述】:在 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.
为什么 ' 和 (:) 不能在这里组合?我可以分两步完成,但我希望更简洁并避免额外的变量。
EDU>> B = A'
B =
1 3 5
2 4 6
EDU>> B(:)
ans =
1
2
3
4
5
6
为什么我不能在 1 步中通过组合 ' 和 (:) 来做到这一点?这样做的正确方法是什么?
谢谢, ~查克
【问题讨论】:
这基本上是this question的复制品。此外,this related question 进一步说明了索引运算符()
无法遵循某些操作,除非您将其转换为函数调用。
谢谢,我的主要问题实际上是关于索引运算符的第二点。有趣的是,Octave 似乎没有遇到这个问题。
【参考方案1】:
也许使用重塑
reshape(A',prod(size(A)),1)
【讨论】:
这有什么问题? 我觉得没问题。对不起,有人投了你的票。 我将删除我的帖子,这与您的帖子相同,但更早。周围有人不高兴。如果答案不是他们想要的,他们为什么要轻易地给人们投反对票。 +1 表示reshape
,但最好选择较短的reshape(A', [], 1)
并让reshape
计算A
中的元素数。如果您坚持自己做,请考虑使用numel(A)
而不是prod(size(A))
。以上是关于在 MATLAB 中,为啥我不能组合转置和冒号运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章