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.

 采纳的回答

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 个评论

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.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by