Assign multiple fields to a Struct-Array

8 visualizzazioni (ultimi 30 giorni)
Vincent
Vincent il 9 Set 2011
hi, I'm new to struct Arrays and I've got the following problem:
filelist(:).names = upper(filelist(:).names);
somehow I cannot figure out how to tell matlab to assign each result of the upper function to one entry in the filelist. I'm sure that there's a simple solution but I understand how until now
Thanks!

Risposte (3)

Fangjun Jiang
Fangjun Jiang il 9 Set 2011
filelist(1).names='a';
filelist(2).names='b';
a=upper({filelist.names});
[filelist.names]=deal(a{:})
  2 Commenti
Andrei Bobrov
Andrei Bobrov il 9 Set 2011
+1
[filelist.names]=a{:}
Fangjun Jiang
Fangjun Jiang il 9 Set 2011
Thanks, andrei! deal or no deal!

Accedi per commentare.


Andrei Bobrov
Andrei Bobrov il 9 Set 2011
for j1 = numel(filelist):-1:1
filelist(j1).names=upper(filelist(j1).names);
end
variant with arrayfun and others
filelist = ...
cell2struct(arrayfun(@(x)upper(x.names),filelist,'un',0),fieldnames(filelist));

Vincent
Vincent il 9 Set 2011
Is there also a solution avoiding the loop?
  3 Commenti
Vincent
Vincent il 9 Set 2011
less lines, nicer code and isn't it often faster to use vecorization (if possible)
anyway thank you very much for your nice answers!
Fangjun Jiang
Fangjun Jiang il 9 Set 2011
So, is my answer above what you are looking for?

Accedi per commentare.

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by