Привязка индексированных значений к структурному полю

#matlab

#matlab

Вопрос:

Я хотел бы, чтобы поле моей индексированной структуры принимало значение, аналогично индексированное в другом векторе:

 struc(1:3).value=1:3
  

Однако это приводит к ошибке "Expected one output from a curly brace or dot indexin& expression, but there were 2 results."

Заключение левой или правой части строки назначения в квадратные скобки не помогает. И я думаю, deal что это не подходит, поскольку оно просто распределяет одно и то же значение, а не присваивает однозначные значения по вектору.

Как я могу добиться такого присвоения переменной, кроме как с помощью цикла for? Использование Matlab 2016a.

Ответ №1:

Если вы уже создали struc , просто выполните:

 c = num2cell(1:3);
[struc(1:3).value] = c{:};
  

Или создайте нужную структуру в одной строке:

 struc = cell2struct(num2cell(1:3), {'value'});