Loop through specific strcuture field names
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I would like to loop through specitifc feild names of my struct. At the moment the field names are typed out individually for each entry in "names" like this (variable names are more descriptive in the real code):
names={'di','da','du','bi','ba','bo','fi','fa','fu','fe'};
[R{i}.di_Beat,R{i}.di_R_med,R{i}.di_D_med,R{i}.di_R_m,...
R{i}.di_D_m]=Cut(L{i}.di_F,S_start{i},S_length{i},ts{i},1,'g');
Currently I just rewrote these two lines of code for each entry of name, this would be the next two lines for example:
[R{i}.da_Beat,R{i}.da_R_med,R{i}.da_D_med,R{i}.da_R_m,...
R{i}.da_D_m]=Cut(L{i}.da_F,S_start{i},S_length{i},ts{i},1,'g');
The field names do not appear all one after another so i can just pull out the names. I tried to concatenate teh variable names as a string unsing strcat but that did not work out. I did something along the linnes of:
for n=1:length(names)
Beat=strcat('R{i}.',names{n},'_Beat');
R_med=strcat('R{i}.',names{n},'_R_med');
D_med=strcat('R{i}.',names{n},'_D_med');
R_m=strcat('R{i}.',names{n},'_R_m');
D_m=strcat('R{i}.',names{n},'_D_m');
Signal=strcat('L{i}.',names{n},'_F');
[Beats,R_med, D_med, R_m, D_m]=Cut(Signal,S_start{i},S_length{i},ts{i},1,'g');
end
This still seems too compliocated and I am looking for an easier way to do this.
Any help is highly appreciated!
3 Commenti
Jos (10584)
il 22 Mar 2019
This would only propagate badly written code ... so, my answer would be no.
Risposta accettata
James Tursa
il 22 Mar 2019
As Stephen says, this is going to be slow. But maybe this syntax using dynamic field names would be useful to you:
R{i}.([names{n},'_Beat'])
etc.
Più risposte (0)
Vedere anche
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!