首页 > 解决方案 > Octave:创建和初始化结构的简洁方法

问题描述

我有一个长度为 3 的字符串单元数组

headers_ca =
{
  [1,1] = time
  [1,2] = x
  [1,3] = y
}

我想创建一个struct模仿 python dict 的值,其中的值headers_ca作为键(Octave 中的字段名)和所有条目的初始值设定ival项。这将是一个struct,因为它甚至dict存在于八度音阶中,它已被弃用

我能做到(蛮力)s = struct("time", ival, "x", ival, "y", ival);

最简洁的方法是什么?

我知道我可以做一个 for 循环。 可以避免吗?

我将使用更长的单元阵列。

标签: dictionarystructinitializationoctave

解决方案


您可以使用structcell2struct来创建结构。

headers_ca = {'time','x','y'};
headers_ca(2, :) = {ival};
s = struct(headers_ca{:});

headers_ca = {'time','x','y'};
ivals = repmat({ival}, numel(headers_ca), 1);
s = cell2struct(ivals, headers_ca);

推荐阅读