any fast funcitons to do this triple for loop?
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Daniel Shub
2012 年 5 月 3 日
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(:)';
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!