如何在 Octave 中组合一个元胞数组和两个标量以获得字符串、标量 1、标量 2 元素的元胞数组,避免循环?
how can I combine a cell array and two scalars to obtain a cell array of string, scalar1, scalar2 elements in Octave avoiding loops?
我有一个类似 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
值。
我也在考虑使用匿名函数而不是在内存中分配所有这些数据。有意义吗?
提前致谢。
我建议您创建一个二维元胞数组,而不是元胞数组的元胞数组,因为这更容易生成,而且对于大型数组,它占用的内存也更少:
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}
,等等)。
我有一个类似 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
值。
我也在考虑使用匿名函数而不是在内存中分配所有这些数据。有意义吗?
提前致谢。
我建议您创建一个二维元胞数组,而不是元胞数组的元胞数组,因为这更容易生成,而且对于大型数组,它占用的内存也更少:
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}
,等等)。