Adding fields and values to a structure iteratively

I wish to make a struct with n fields, each containing a probability distribution generated by makedist(). As an example, let's take n=3. My code looks like this:
prior(1)=makedist('uniform',-1,1);
prior(2)=makedist('uniform',-1,1);
prior(3)=makedist('uniform',-1,1);
priors=struct('prior1',prior(1),'prior2',prior(2),'prior3',prior(3));
I would like to build the struct "priors" iteratively in a loop when n is large, but I'm having lots of difficulty working with structs, even after reading the documentation and other questions posted here. Any advice would be much appreciated!

1 件のコメント

Stephen23
Stephen23 2020 年 7 月 18 日
"I wish to make a struct with n fields,..."
Your code would be simpler and more efficient if you used a 1xn structure with one field:
S(1).prior = makedist('uniform',-1,1);
S(2).prior = makedist('uniform',-1,1);
S(3).prior = makedist('uniform',-1,1);

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

 採用された回答

Sindar
Sindar 2020 年 7 月 17 日

0 投票

n=3;
priors=struct();
for ind=1:n
priors.("prior"+ind) = makedist('uniform',-1,1);
end

その他の回答 (0 件)

カテゴリ

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

質問済み:

2020 年 7 月 17 日

コメント済み:

2020 年 7 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by