【问题标题】:Convert a 2-D vector into a 4-D vector in Matlab在 Matlab 中将二维向量转换为 4 维向量
【发布时间】:2015-04-20 17:15:51
【问题描述】:

是否可以在 matlab 中将二维向量转换为 4 维向量?

我可以创建二维向量,例如:

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) 表示法或将1D 或2D 版本的输入重塑为4D。
  • reshape 也可以“高档”。只需用适当的尺寸喂它

标签: matlab matrix vector


【解决方案1】:

你可以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 没有为n>2 直接创建 n-d 数组的命令行,但它可以直接将reshape 任何 2D 或 3D 数组转换为高维数组。

【讨论】:

  • 非常感谢您帮助我解决了我的愚蠢疑问。我在实现玩具页面排名器时也使用了 numpy 模块..
【解决方案2】:

如果您想直接创建 4D 数组(不带 reshape),您需要使用稍微繁琐的语法,使用 cat 函数:

A = cat(4, cat(3, [1 2],[3 4]), cat(3, [5 6],[7 8]), cat(3, [9 10],[11 12]));

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2013-05-26
    • 2021-02-08
    • 2012-06-22
    • 1970-01-01
    相关资源
    最近更新 更多