Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assign value to the same field of every element of non-scalar struct

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?

like image 339
quazgar Avatar asked Oct 09 '12 08:10

quazgar


1 Answers

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.

like image 107
H.Muster Avatar answered Oct 14 '22 00:10

H.Muster