如何在 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 的每个元素,具有 val1val2 值。

我也在考虑使用匿名函数而不是在内存中分配所有这些数据。有意义吗?

提前致谢。

我建议您创建一个二维元胞数组,而不是元胞数组的元胞数组,因为这更容易生成,而且对于大型数组,它占用的内存也更少:

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},等等)。