如何创建一个空struc给定结构的字段?

663(30天)
我有一个结构体与许多领域:
一位
A.b
A.z
现在我想创建一个struct B,相同的字段:
本科
反方向
B.z
B =结构(一)
B也差不多大小,还包括的所有值。但是我想要一个空的结构与0 x1维度。
背景:在一个循环中我想整理一些条目,符合一定的标准,把它写进b。如果我做
B =结构([])
B (n) = (m)
结构不匹配。因此我想创建B提前然后分配它。
1评论
莎拉
莎拉 2014年3月18日
不是一个数组,所以我看不出你如何能做B (n) = (m)。你的意思是你想做类似的:1)B。f =。一个,或者2)本科(n) = A.b (m) ?

登录置评。

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2014年3月18日
编辑:詹姆斯Tursa 2014年3月18日
方法之一,这将给你一个0 x0结构是:
f =字段名(一)”;
f {2, 1} = {};
B =结构(f {:});
方法主要从这FEX提交由大卫年轻:
警告:你给的描述,这听起来像是你将动态地增加B的大小在一个循环。这将导致重复复制将减缓性能。如果B的元素数量很小,没什么大不了的。但如果B的元素的数量是大的,那么你可能会经历一个阻力性能。在这种情况下它可能意义preallocate B开始的大小(而不是0 x0)足够容纳所有的结果,然后砍掉尾巴后你不需要循环就完成了。

更多的答案(3)

Stephen23
Stephen23 2019年5月23日
编辑:Stephen23 2019年5月23日
最简单、最有效的解决方案就是使用索引,提出的问题例如:
> > (1)。x = 1;
> > (1)。y = 2;
> > (2)。x = 3;
> > (2)。y = 4
一个=
1 x2结构数组字段:
x
y
> > B = ([])
B =
0 x0结构数组字段:
x
y
使用索引我们也可以容易地获得 完全 尺寸要求在原来的问题:
> > B = ([], 1)
B =
0 x1结构数组字段:
x
y

本Oeveren
本Oeveren 2018年8月17日
编辑:本Oeveren 2018年8月17日
我经常使用
字段= {“field1”,“field2”,“field2”}
c =细胞(长度(字段),1);
s = cell2struct (c、字段);
2的评论
KAE
KAE 2019年12月20日
我认为应该
字段= {“field1”,“field2”,“field3”}
所以你得到
s =
结构体字段:
field1: []
field2: []
field3: []

登录置评。


Binxu
Binxu 2020年4月22日
其实我只是喜欢一个超级简单的方法类似于斯蒂芬Cobeldick 的回答
在我看来, repmat 是一个超级有用的工具初始化数据结构。
摘要=
结构体字段:
anova_F: 1.0172
anova_p: 0.4279
anova_F_bsl: 1.0156
anova_p_bsl: 0.4335
t: 8.7424
t_p: 5.9749 e-18
t_CI: [2×1双)
统计= repmat(总结,0,0);
> > repmat(摘要,0,0)
ans =
0×0空结构体数组字段:
anova_F
anova_p
anova_F_bsl
anova_p_bsl
t
t_p
t_CI

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!