matlab:结构数组的字段实际上是命名单元数组吗?
Posted
技术标签:
【中文标题】matlab:结构数组的字段实际上是命名单元数组吗?【英文标题】:matlab: Is a field of structure array actually a named cell array? 【发布时间】:2014-03-08 11:47:35 【问题描述】:我在 Google 上搜索了有关元胞数组和数组之间差异的主题,并认为元胞数组实际上存储了指向元素内容的指针。
运算符 就像C 中的
&
,对吧?
当 应用于变量
var_a,var_b
时,我们会得到一个指向var_a
和var_b
的1*2“单元指针”数组? “单元格指针”有名称吗?
结构体数组是否采用类似的内存排列方式?
以matlab文档中的例子为例:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79, 75, 73; 180, 178, 177.5; 172, 170, 169];
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169];
所以变量患者就像一个 2*3 单元格数组,除了字段名称?
patientcell2,3=...
我想知道下面的概念:
结构中的点运算符尊重其内容:
patient(1).test;
=> 患者细胞1,3
对吗?
【问题讨论】:
为了更深入地了解,我建议深入研究 MEX API 以了解 how the underlyingmxArray
works 在幕后 - 即使是数字数组实际上也只存储指向其数据的指针(这就是复制的方式-write 机制有效,一方面)
我认为为了完成写时复制,数值数组只存储指向起始元素的指针,这与元胞数组不同。您帖子中的链接是一个api列表,没有详细的实现。很遗憾,mathworks 隐藏了这些细节。
【参考方案1】:
Preallocation of cell array in matlab
可以合理地假设一个元胞数组被实现为 连续的指针数组,每个指针指向的实际内容 细胞。
How do i define a structure in Matlab
结构只是一个指针[s]数组
【讨论】:
感谢您确认我对结构包含两个指针的犹豫。也许将二维元胞数组类比为结构数组本身就是一个模棱两可的问题。毕竟,我们没有下面的实现,Mathworks 也没有把这两者的语义等价。以上是关于matlab:结构数组的字段实际上是命名单元数组吗?的主要内容,如果未能解决你的问题,请参考以下文章