【问题标题】:How do I create a 3D array in matlab? [duplicate]matlab如何创建一个3D数组? [复制]
【发布时间】:2012-01-06 18:22:40
【问题描述】:

可能重复:
Matlab: How to create a 3D matrix?

我有2个向量如下:

A= 5 x 10 ( 5 rows, 10 column)
B= 5 x 6  ( 5 rows , 6 column)

如何创建一个 3D 数组,即 5 x 10 x 6,但不填充零?

【问题讨论】:

  • 其实矩阵B的列一定是第3维的值
  • 您无法按照您想要的方式从向量创建 3D 矩阵。您的向量只有 50+30=80 元素,而您描述的 3D 矩阵有 300 元素。
  • emmm,让我描述一下,,数组A和B中的行都代表图像名称1到5,因此在数组A的第1行中,10个值代表与图像1相关的值,并且数组 B 的第 1 行有另外 6 个值代表同一个图像,那么我怎样才能将所有这些放入 3D 数组中?
  • 我需要为此构造一个张量,但我不知道该怎么做
  • 如果您的张量大小为 (5,10,6),您希望在 (i,j,k) 的位置放置什么数字?

标签: matlab multidimensional-array


【解决方案1】:

我认为 3D 矩阵不是您想要的。我建议以下选项:

选项 1. 元胞数组

>> A = rand(5,10); B = rand(5,6); 
>> {A, B}

ans = 

    [5x10 double]    [5x6 double]

选项 2. 单元矩阵

>> clear C; for i=1:5, C{i,1} = A(i,:)'; C{i,2} = B(i,:)'; end; C

C = 

    [10x1 double]    [6x1 double]
    [10x1 double]    [6x1 double]
    [10x1 double]    [6x1 double]
    [10x1 double]    [6x1 double]
    [10x1 double]    [6x1 double]

选项 3. 连接数组,然后简单地根据您需要的部分进行索引。

>> C = [A,B]; size(C)

ans =

    5    16

选项 4. 使用结构体数组

>> clear C; for i=1:5, C(i).A = A(i,:)'; C(i).B = B(i,:)'; end; C

C = 

1x5 struct array with fields:
    A
    B

如果您将 3D 矩阵视为立方体,将 2D 矩阵视为正方形,您应该会看到您正在尝试从两个正方形创建一个立方体,而立方体的体积为空(同样作为其他四个方面)。

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多