any fast funcitons to do this triple for loop?
Show older comments
I have this code. Is there any way to make it faster. My data is huge. Thanks. I am simple restoring everthing into vector instead of 3D array:
ii = 1
for z = 1:data_size(3)
for y = 1:data_size(2)
for x = 1:data_size(1)
data_tmp(ii) = data(x,y,z);
ii = ii+1;
end
end
end
1 Comment
Daniel Shub
on 3 May 2012
If your data is huge, you will definitely want to preallocate data_tmp.
Answers (1)
Daniel Shub
on 3 May 2012
I believe
data_tmp = data(:);
should work, although the collapsing across dimension might not perfectly match your loops.
Edit: A simple check
data = reshape(1:8, 2, 2, 2)
data_size = size(data);
ii = 1;
for z = 1:data_size(3)
for y = 1:data_size(2)
for x = 1:data_size(1)
data_tmp(ii) = data(x,y,z);
ii = ii+1;
end
end
end
isequal(data_tmp, data(:))
reveals that my solution does not match your solution. But,
isequal(data_tmp, data(:)')
does match. So the answer is
data_tmp = data(:)';
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!