vectorization

Can someone give me a push in the right direction regarding vectorising a loop. Is it possible to vectorise any loop? If so, I have the following script:
Names = fieldnames(Data);
for i = 1:length(fieldnames(Data));
for j = 1:length(Data.(Names{i}));
index = (Data.(Names{i}){j,1}(:, 1)==211);
Data.(Names{i}){j,1} = Data.(Names{i}){j,1}(index, :);%
end
end
Where 'Data' is a (1x3) structure. Although this particular loop doesn't take long to run, it seems like a good place to start to learn how to vectorise instead of using loops.
Any advice would be much appreciated.

3 comentarios

Walter Roberson
Walter Roberson el 17 de En. de 2012
There are loops which cannot be vectorized. (I have not examined your code to see if yours is one of them.)
Sean de Wolski
Sean de Wolski el 17 de En. de 2012
I think you should describ ehow data is organized and how it's indexed. I think you might be able to simplify that which would in turn make vectorization easier.
Richard
Richard el 18 de En. de 2012
The structure 'Data' has 3 fields, called 'data1', 'data2', and 'data3' which are expressed by 'Names'. The index then goes through the first column in each matrix in 'Data.(Names)' to produce a matrix where only the rows which begin with 211 are kept.
I hope this is clearer.

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 18 de En. de 2012

0 votos

A simplification - please test if this is faster already, although it is not vectorized:
Names = fieldnames(Data);
for i = 1:length(fieldnames(Data));
Names_i = Data.(Names{i});
for j = 1:length(Names_i);
index = Names_i{j,1}(:, 1)==211;
Names_i{j,1} = Names_i{j,1}(index, :);
end
Data.(Names{i}) = Names_i;
end
If the cells stored in the field are {N x 1} cell vectors, omitting the second index saves time: Names_i{j} instead of Names_i{j,1}.

Más respuestas (0)

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 17 de En. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by