Find indices in a structure array by comparing the name
Mostrar comentarios más antiguos
I have struct array that is similar like that:
Block.name= {'Time','Signal_x','Signal_y','Signal_z'};
Block.channel(1).values= 1:10; %time vetor for all signals in this struct
Block.channel(2).values= rand(1,10); %correspoinding values of Signal_x
Block.channel(3).values= rand(1,10); %correspoinding values of Signal_y
Block.channel(4).values= rand(1,10); %correspoinding values of Signal_z
Now I want to pick out the values of a certain signal, assuming I know the name of the signal but I don't know the order of channels.
Name_desiredSignal= 'Signal_y'; %e.g. values of the Signal_y
I know I can do this by a loop like this:
for idx=2:length(Block.name) %I know that the first channel is always the time vector
if(strcmp(Block.name(idx),Name_desiredSignal))
channel_Nr= idx;
end
Once I have the channel number/index, I can easily get it:
desiredSignal= Block.channel(channel_Nr).values;
I wonder if there is a smarter way, which avoids the loop?
Thanks for help!
Respuesta aceptada
Más respuestas (1)
Gerhard Weiss
el 2 de Dic. de 2020
3 comentarios
Ameer Hamza
el 2 de Dic. de 2020
Still easy peasy:
channel_Nr = find(contains({Block.channel.name}, Name_desiredSignal))
Gerhard Weiss
el 2 de Dic. de 2020
Ameer Hamza
el 2 de Dic. de 2020
I am glad to be of help!
Categorías
Más información sobre Numerical Integration and Differential Equations en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!