【发布时间】:2015-07-29 15:29:58
【问题描述】:
假设我有一个非空向量z。
我想复制这个向量并将其塑造成一个维度为[r, c, length(z)] 的矩阵。
例如:
z = 1:5;
r = 3;
c = 3;
我正在寻找一个给我的功能:
ans(:, :, 1) =
[ 1 1 1 ]
[ 1 1 1 ]
[ 1 1 1 ]
ans(:, :, 2) =
[ 2 2 2 ]
[ 2 2 2 ]
[ 2 2 2 ]
...
ans(:, :, 5) =
[ 5 5 5 ]
[ 5 5 5 ]
[ 5 5 5 ]
注意: 做类似的事情
tmp = zeros(r,c,length(z));
tmp = repmat(z, 3, 3, 1);
不起作用。相反,它返回一个 15x15 矩阵
tmp =
[ 1:5, 1:5, 1:5 ]
[ 1:5, 1:5, 1:5 ]
[ 1:5, 1:5, 1:5 ]
这不是我想要的。
先转置z 也不起作用。
我知道的唯一解决方案是最初将z 设置为向量的第三维:
z(1,1,:) = 1:5;
有没有更有效的方法来做到这一点?或者这是最有效的方法?
COROLLARY:是否有类似“转置”的函数将向量转置为单维?也就是说,如果transpose() 将行向量整形为列向量,反之亦然,是否有一个函数可以将行/列向量整形为单维并返回?
提前致谢!
【问题讨论】:
-
我认为
permute是转置的n-d 类似物。 Transpose 交换前两个维度,permute交换任意维度