Assign multiple fields to a Struct-Array

8 visualizaciones (últimos 30 días)
Vincent
Vincent el 9 de Sept. de 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!

Respuestas (3)

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

Iniciar sesión para comentar.


Andrei Bobrov
Andrei Bobrov el 9 de Sept. de 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 el 9 de Sept. de 2011
Is there also a solution avoiding the loop?
  3 comentarios
Vincent
Vincent el 9 de Sept. de 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 el 9 de Sept. de 2011
So, is my answer above what you are looking for?

Iniciar sesión para comentar.

Categorías

Más información sobre Structures en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by