vectorization
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Sean de Wolski
am 17 Jan. 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.
Akzeptierte Antwort
Jan
am 18 Jan. 2012
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}.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!