Вопрос по arrays, matlab, struct, field, assign – Присвойте значение одному и тому же полю каждого элемента нескалярной структуры

7

В Matlab присваивание массивов ячеек полю массива структурfoo возможно с

my_array(1000).foo = [];
[my_array.foo] = some_cell{:};

Теперь я хотел бы назначить одно значение всем полям массива. Но что бы я ни пытался, Matlab возвращал бы сообщения об ошибках вместо того, чтобы молча предполагать, что если я хочу назначить один элемент размера[1x1]должно быть назначеновсе поля. Я был бы счастлив, если бы я мог просто сказать, например:

my_array.foo = pi;
??? Incorrect number of right hand side elements in dot name assignment.
Missing [] around left hand side is a likely cause.

Итак, как я могу назначить одно значение для поля по всему массиву структуры?

Ваш Ответ

1   ответ
13

Ты можешь использоватьdeal Для решения этой проблемы:

my_array(1000).foo = [];
[my_array.foo] =deal(pi);

Однако обратите внимание, что квадратные скобки во второй строке необходимы для временного преобразования списка через запятую.my_array.foo в вектор.

Похожие вопросы