@ Объяснение Wolfie для поведения правильно.
Обходной путь - поместить данные в массивы ячеек следующим образом:
>> struct('arg1', {arg1}, 'arg2', {arg2}, 'arg3', {arg3})
ans =
struct with fields:
arg1: 42
arg2: 'test'
arg3: {}
Это работает из-заэта строка в документации:
- Если какой-либо из входных значений является массивом нескалярных ячеек, то s имеет те же размеры, что и массив нескалярных ячеек.
Итак, мы делаем все входные значения нескалярными массивами ячеек.{arg3}
- это то же самое, что и {{}}
, массив ячеек с одним элементом: пустой массив ячеек.
Обратите внимание, что можно создать массив структур с этим синтаксисом:
>> struct('arg1', {1,2,3}, 'arg2', {arg2}, 'arg3', {arg3})
ans =
1×3 struct array with fields:
arg1
arg2
arg3
Поскольку аргумент 'arg1'
является массивом ячеек с 3 элементами, созданный массив структур также имеет 3 элемента.Массивы ячеек с одним элементом реплицируются во все массивы ячеек.