在Matlab中将2-D向量转换为4-D向量

3

在Matlab中,是否可以将一个二维向量转换为四维向量?

我可以创建像下面这样的二维向量:

A = [[1 2];[3 4]] -->(code segment_1)

以及像4-D向量这样的内容

A = ones(2,3,4,8)  -->(code segment_2)

能否像使用code_segment_1创建2-D向量一样创建4-D向量?(让我更清楚一些,A=[[[1 2],[3 4]],[[5 6],[7 8]],[[9 10],[11 12]]]会创建一个1x12矩阵)
此外,我看到我们使用reshape函数将k维矩阵转换为l维矩阵,其中k>l。这基本上是降采样,但我们能否增加维度?

你需要使用 A(:,:,:,k) 表示法或将输入的 1D2D 版本重塑为 4D - Divakar
3
reshape也可以进行“放大”。只需输入适当的维度即可。 - Luis Mendo
2个回答

3
你可以将2D矩阵“reshape”(重塑)成4D数组,只要不改变元素数量即可。
 oneD = 1:12; %// creare 1D vector
 twoD = reshape( oneD, [6 2] ); %// reshape into a 2D matrix
 threeD = reshape( oneD, [2 3 2] ); %// now you have a 3D array
 fourD = reshape( oneD, [1 2 3 2] ); %// 4D with a leading singleton dimension

从你的问题看来,你似乎有一些numpy的经验。Matlab没有直接的命令行创建大于2维的n-d数组,但是将任何2D或3D数组reshape成更高维度的数组是很简单的。


2
非常感谢你帮助我解决了我的一些愚蠢的疑虑。同时,当我实现一个玩具页面排名器时,我也使用了numpy模块。 - Avinesh

1
如果你希望直接创建四维数组(不使用reshape),你需要使用稍微麻烦一些的语法,使用cat函数:
A = cat(4, cat(3, [1 2],[3 4]), cat(3, [5 6],[7 8]), cat(3, [9 10],[11 12]));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接