【发布时间】:2020-08-03 18:06:02
【问题描述】:
有没有办法将双精度数组转换为结构数组并将其放在一个字段下?
例如,假设我们从cellfun 的调用中得到一个双精度数组,输出数组看起来像
data=[1,2;3,4];
我们可以在哪里获得struct S 吗
S=struct;
for i=1:numel(data)
S(i).data=data(i);
end
end
使用本机函数还是有效地获取 S? (最后是视觉效果)
如果有方法,得到的struct数组是否可以保留原始双精度数组的维度?该方法能否应用于cellfun的输出,其中输出为双精度数组?
在我的特定应用程序中,我的data 是对cellfun 的调用的(统一)输出,当我设置S.data=cellfun(...) 时,结果是一个单元素结构数组,其中S.data 是m-来自cellfun(...) 的 by-n 双数组。如何分配数组元素?
(我手头的任务涉及每个查询处理 10k 个数据点,每个任务大约有 16 个查询。所以速度很重要。如果没有有效的方法,我会知道避免 struct 用于这种特定类型的任务. 所以这方面的 cmets 也很有帮助。)
【问题讨论】:
-
仅供参考:这是非常低效的记忆方式。每个矩阵都有 114 字节的开销(截至 R2017a,不确定这是否最近发生了变化)。因此,具有单个双精度值的矩阵占用 122 个字节。每个单元格为单个值的单元格数组,或每个元素为单个值的结构体数组,因此每个元素至少占用 122 个字节(加上单元格数组或结构在其之上添加的任何开销)。因此,不是每个元素使用 8 个字节,而是使用 122 个,超过 15 倍的内存。
-
@CrisLuengo:感谢您的参与!这些信息对我很有帮助。我会记住的。