How to add values to structure array without loop

Consider the following loop:
values = [2 5 6 4 8 9 10 5 15 7]
for i=1:10
arr(i).myfield = values(i);
end
How can this be done without loop?
Thank you.

 Accepted Answer

T = struct('myfield', num2cell(values));
arr(1:length(T)) = T;
In the special case that arr does not already exist, it can be done with the one line
arr = struct('myfield', num2cell(values));

4 Comments

Thanks Walter. But arr already exists with other fields. For example
arr(1).myfield1=10;
arr(2).myfield1=20;
arr(3).myfield1=30;
And I want to add another field myfield2 with values as below
values = [100 200 300];
for i=1:3
arr(i).myfield2 = values(i);
end
When I used your code
T = struct('myfield2', num2cell(values));
arr(1:length(T)) = T;
I got the following error message
Subscripted assignment between dissimilar structures.
T = num2cell(values);
[arr(1:10).myfield2] = T{:};
It is necessary to use two lines for this.
Great!!!!!!!!!!!! thank you

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!