【问题标题】:Is a MATLAB struct array with fields of dimensions MxN the same as NxM? [duplicate]具有维度 MxN 的字段的 MATLAB 结构数组是否与 NxM 相同? [复制]
【发布时间】:2021-05-13 21:54:56
【问题描述】:

假设我有一个人的列表,我想将他们的名字存储在一个结构数组中:

people(1).name = "john"
people(1).lastname = "doe" 
people(2).name = "jane"
people(2).lastname = "smith" 

这将给出一个带有字段名称和姓氏的“1×2 struct array”。

现在,如果我这样做:

peoplev2(1,1).name = "john"
peoplev2(1,1).lastname = "doe" 
peoplev2(2,1).name = "jane"
peoplev2(2,1).lastname = "smith" 

它会给我一个带有名称和姓氏的“2×1 struct array”。

现在,尽管尺寸不同(一个是 1x2,另一个是 2x1),但可以以相同的方式访问两个结构数组并获得相同的结果:

people(1)

是一个名为“john”和姓氏“doe”的结构

peoplev2(1)

也是一个名为“john”和姓氏“doe”的结构。

我本来希望一个数组相对于另一个数组进行旋转(1x2 与 2x1),但尽管尺寸不同,它们似乎是相等的。此外,如果您在 MATLAB Workspace 中将它们可视化,它们都会呈现为包含第 1 行和第 2 行以及列“名称”和“姓氏”的表(我想我会得到第 1 列和第 2 列,以及行名称和姓氏)。

为什么 1x2 与 2x1 完全没有区别?在其他语言中,如果您尝试使用典型索引 ij 迭代矩阵,在一种情况下,i 将循环到 2,而在另一种情况下,它将是 j,它们肯定不会平等。

我在这里缺少什么?谢谢!

【问题讨论】:

  • 在重复问题中专门查看线性索引。您在这里使用线性索引,这意味着向量的方向无关紧要。

标签: arrays matlab syntax


【解决方案1】:

MATLAB 中的矩阵的行为方式与数学中的相同: [1 2] * [1; 2] = 11 + 22 = 5(标量结果) [1; 2] * [1 2] = [1 2 ; 2 4](矩阵结果) 所以不,1x2 不等于 2x1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2011-03-05
    • 2015-01-30
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多