Vectorize nested for loop with matrix indexing
1 回表示 (過去 30 日間)
古いコメントを表示
Hello everyone, the code shown below works as intended. It's just that it takes quite a bit of time to execute.
Note : T is a 512x3 array of doubles, Z1 is a 512x512 array of doubles and Z1_encrypt = Z1 OR T
Z1_encrypt = [];
Z2_encrypt = [];
Z3_encrypt = [];
for i = 1:1:512
disp(i)
for j = 1:1:512
Z1_encrypt = [Z1_encrypt bitor(Z1(j,i),T(j,1),'uint64')];
Z2_encrypt = [Z2_encrypt bitor(Z2(j,i),T(j,2),'uint64')];
Z3_encrypt = [Z3_encrypt bitor(Z3(j,i),T(j,3),'uint64')];
end
end
I was looking into vectorization of code to speed it up and went over quite a few examples. One very similar example can be found here, but it was of not much help to me.
It would be great if someone could help me out here.
0 件のコメント
採用された回答
Chunru
2022 年 1 月 8 日
% The following code is slow, because the array size is growing. Memory
% allocation will slow down the program
% Z1_encrypt = [];
% Z2_encrypt = [];
% Z3_encrypt = [];
% for i = 1:1:512
% disp(i)
% for j = 1:1:512
% Z1_encrypt = [Z1_encrypt bitor(Z1(j,i),T(j,1),'uint64')];
% Z2_encrypt = [Z2_encrypt bitor(Z2(j,i),T(j,2),'uint64')];
% Z3_encrypt = [Z3_encrypt bitor(Z3(j,i),T(j,3),'uint64')];
% end
% end
% ry the following for speed
Z1_encrypt = bitor(Z1,T(:,1),'uint64');
Z2_encrypt = bitor(Z1,T(:,2),'uint64');
Z3_encrypt = bitor(Z1,T(:,3),'uint64');
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!