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.

 採用された回答

Walter Roberson
Walter Roberson 2015 年 12 月 8 日

1 投票

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 件のコメント

Durga Lal Shrestha
Durga Lal Shrestha 2015 年 12 月 8 日
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.
Walter Roberson
Walter Roberson 2015 年 12 月 8 日
T = num2cell(values);
[arr(1:10).myfield2] = T{:};
It is necessary to use two lines for this.
Durga Lal Shrestha
Durga Lal Shrestha 2015 年 12 月 8 日
Thanks. It works now.
Somaye Hamedi Bazaz
Somaye Hamedi Bazaz 2018 年 11 月 24 日
Great!!!!!!!!!!!! thank you

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCell Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by