7

In Matlab, assigning cell arrays to a struct arrays field foo is possible with

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

Now what I would like to do is assign a single value to all fields in the array. But whatever I tried, Matlab would return error messages instead of silently assuming that if I want to assign a single element of size [1x1], it should be assigned to all fields. I would be happy if I could simply say e.g.:

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

So, how can I assign a single value to a field all over a struct array?

Robert Seifert
  • 25,078
  • 11
  • 68
  • 113
quazgar
  • 4,304
  • 2
  • 29
  • 41

1 Answers1

13

You can use deal to solve this problem:

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

However, note the square brackets in the second line with are necessary to temporarily convert the comma separated list my_array.foo into a vector.

H.Muster
  • 9,297
  • 1
  • 35
  • 46