How to address multiple subfields of a structure at once?
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Matthias Stangl
il 13 Ott 2016
Risposto: Matthias Stangl
il 13 Ott 2016
Hi all,
I have a simple programming question, which might be easy for some of you, but I just can’t find the answer: If I have multiple fields of a structure, how can I address the same variable of multiple subfields at once?
Here is an example:
x(1).a = 10;
x(2).a = 20;
x(3).a = 30;
Now I want a vector of all the a-subfields, like:
result = [10, 20, 30]
I was trying this, but it doesn’t work:
result = x(1:3).a;
Or I want to assign a different value to multiple a-subfields at once. I was trying this, but it doesn’t work:
x(1:3).a = 10;
I know that I can solve this in a for-loop, like:
for i = 1:length(x)
x(i).a = 10;
end
But is there a simpler solution without a loop for this problem?
Thanks!
0 Commenti
Risposta accettata
KSSV
il 13 Ott 2016
Modificato: KSSV
il 13 Ott 2016
You can access the result like:
result = [x(1:3).a]
or
result = [x(:).a]
Replacing the fields I think loop is one option and other way is to use structfun. I tried to implement this but could not get it. Hope some one will answer it.
1 Commento
Stephen23
il 13 Ott 2016
Thats very good and super easy, thanks a lot! However, this only solved the question about "reading" of values. Is there also a similar solution to "write" values, as described in the second part of my question. Or do I actually need to solve this in a loop:
I want to assign a different value to multiple a-subfields at once. I was trying this, but it doesn’t work:
x(1:3).a = 10;
Thanks!
Più risposte (2)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!