假设我有一个矩阵
A=[1 2 3]
是行矩阵。不是我想做“页面”矩阵,即沿第三维对齐元素。
我注意到,以下
A=permute(A,[3 1 2])
有效,而以下
A=permute(A,[3 2 1])
没有。
为什么?
答案 0 :(得分:0)
你的问题不是很清楚。如果我是对的,你希望你的矩阵成为B = [0,0,1; 0,0,2; 0,0,3]。
输入以下内容可以通过转置功能轻松完成:
B(:,:,3)=A'
而不是使用转置函数,它是转置的推广。此外,您的操作可能不会"工作"因为permute是一个影响数组维度的操作,而不是影响其元素的操作
答案 1 :(得分:0)
请注意,A
的尺寸为[1 3]
,而不是[3 1]
。正如CST-Link指出的那样,这与[1 3 1 1]
等等相同,因为单个维度被删除了。
size(A,1) = 1
size(A,2) = 3 <-- You want this to be the third dimension
size(A,3) = 1
现在,你要做的是将第二个维度(告诉你有多少列的那个)与第三个维度(告诉你你有多少个切片的那个)对齐。
使用permute
时,您可以指定希望原始尺寸发生的顺序。即如果您对矢量执行permute(A, [2 1])
,则会转置它。第二个维度现在是第一个维度,反之亦然。你想要第二个dimemsion是第三个,并保持第一个维度不变,所以:
permute(A, [1 3 2])
如果你这样做:
permute(A, [3 2 1])
您将第三个维度作为第一个维度(size(A,1) = 1
),第二个维度(size(A,2) = 3
)将是第二个维度(即它不会更改),第一维度是第三维度。因此,唯一改变的维度是第一和第三。这些都是1开头,所以没有任何改变。
请注意,在这种特殊情况下您也可以使用shiftdim
:
shiftdim(A,-1)