我有一个像P这样的单元格数组和另外两个浮动变量。
P = {"GG+G[G]", "GG", "GG-GGG", "GG[][GG]", "[G[GG-G]]", "G[GG]+[G]"};
val1 = 0.01;
val2 = 0.3;
而我想在不使用循环的情况下建立以下数据结构,因为P单元格数组可以包含大量的元素。
Inputparam =
{
[1,1] = {
[1,1] = "GG+G[G]"
[1,2] = 0.01
[1,3] = 0.3
}
[1,2] = {
[1,1] = "GG"
[1,2] = 0.01
[1,3] = 0.3
}
[1,3] = {
[1,1] = "GG-GGG"
[1,2] = 0.01
[1,3] = 0.3
}
[1,4] = {
[1,1] = "GG[][GG]"
[1,2] = 0.01
[1,3] = 0.3
}
[1,5] = {
[1,1] = "[G[GG-G]]"
[1,2] = 0.01
[1,3] = 0.3
}
[1,6] = {
[1,1] = "G[GG]+[G]"
[1,2] = 0.01
[1,3] = 0.3
}
}
我试过几种方案,但大多数方案得到的都是一个连接而不是元素的组合。
这个结构的目的是作为参数的 parcellfun
函数,这就是为什么我需要让P的每个元素,与 val1
和 val2
值。
我也在考虑使用anonymum函数,而不是在内存中分配所有这些数据,这样做有意义吗?
先谢谢你。
我建议,不要用单元格数组的单元格数组,而是创建一个二维单元格数组,只是因为这样更容易生成,而且,对于大数组来说,它占用的内存也更少。
P = {"GG+G[G]", "GG", "GG-GGG", "GG[][GG]", "[G[GG-G]]", "G[GG]+[G]"};
P(2,:) = 0.01;
P(3,:) = 0.2;
单元格数组的索引是用 P{1,5}
而不是 P{5}{1}
作为OP中的单元格数组。
另一种选择是使用结构体数组。
P = {"GG+G[G]", "GG", "GG-GGG", "GG[][GG]", "[G[GG-G]]", "G[GG]+[G]"};
P = struct('name',P,'val1',0.01,'val2',0.2);
结构体的索引为 P(5).name
而非 P{5}{1}
(和 P(5).val1
而不是 P{5}{2}
、等)。)