首页 > 解决方案 > 具有维度 MxN 的字段的 MATLAB 结构数组是否与 NxM 相同?

问题描述

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

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 行以及列“name”和“lastname”的表(我想我会得到第 1 列和第 2 列,以及行名称和姓氏)。

在此处输入图像描述

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

我在这里想念什么?谢谢!

标签: arraysmatlabsyntax

解决方案


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


推荐阅读