gpt4 book ai didi

matlab - 在matlab中预分配单元格结构

转载 作者:行者123 更新时间:2023-12-02 22:16:26 25 4
gpt4 key购买 nike

我使用一个名为 test 的结构和以下“布局”(whos test, test 的结果)

  Name      Size              Bytes  Class     Attributes
test 1x1 8449048 struct
test =
timestamp: {[7.3525e+05] [7.3525e+05] [7.3525e+05]}
timeseries: {[44000x8 double] [44000x8 double] [44000x8 double]}

对于速度问题,我想用零预分配。我找到了一些导致其他“布局”的方法:

test2=struct('timestamp',cell(1,3),'timeseries',cell(1,3));
test3=struct('timestamp',{0,0,0},'timeseries',{zeros(44000,8),zeros(44000,8),zeros(44000,8)});
tempstamp={0,0,0};
tempseries={zeros(44000,8),zeros(44000,8),zeros(44000,8)};
test4=struct('timestamp',tempstamp,'timeseries',tempseries);
whos test2 test3 test4,test2,test3,test4

导致

  Name       Size              Bytes  Class     Attributes
test2 1x3 176 struct
test3 1x3 8448824 struct
test4 1x3 8448824 struct
test2 =
1x3 struct array with fields:
timestamp
timeseries
test3 =
1x3 struct array with fields:
timestamp
timeseries
test4 =
1x3 struct array with fields:
timestamp
timeseries

发出命令时 test5.timestamp=tempstamp;test5.timeseries=tempseries;whos test5,test5 一个得到

 Name       Size              Bytes  Class     Attributes
test5 1x1 8449048 struct
test5 =
timestamp: {[0] [0] [0]}
timeseries: {[44000x8 double] [44000x8 double] [44000x8 double]}

从而在test中重现“布局”。这很奇怪,不是吗?
进一步使用 test2.timestamp{2}=nowtest3test4 不同。
好的,这在文档 help struct 中有描述,但是我如何预分配这样的 1x1 struct,如 testtest5 在一行内?最好不要使用那些 temp* 变量。

最佳答案

使用带有单元格的struct 来初始化带有单元格的字段需要深度为 2 的单元格:

test=struct('timestamp',{cell(1,3)},'timeseries',{cell(1,3)});

test3 = struct( 'timestamp', { {0,0,0}},...
'timeseries',{ {zeros(44000,8),zeros(44000,8),zeros(44000,8)} });

有关引用,请参阅 struct记录有关“包含元胞数组的字段”的示例。

关于matlab - 在matlab中预分配单元格结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14376903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com