Octave: краткий способ создания и инициализации структуры - PullRequest
1 голос
/ 17 июня 2020

У меня есть массив ячеек из строк длиной 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);

Как проще всего это сделать?

Я знаю, что могу сделать для l oop. Можно ли этого избежать?

Я бы работал с гораздо более длинными массивами ячеек.

1 Ответ

4 голосов
/ 17 июня 2020

Вы можете использовать struct или cell2struct для создания структуры.

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);
...