Adding fields and values to a structure iteratively

7 Ansichten (letzte 30 Tage)
John Davis
John Davis am 17 Jul. 2020
Kommentiert: Stephen23 am 18 Jul. 2020
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 Kommentar
Stephen23
Stephen23 am 18 Jul. 2020
"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);

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by