Speed up code:: Code is working but slow..
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi ,
The code is working fine, but it's very slow... any suggestions ?
clearvars;
clc;
C(1:3,1:3,1:3,1:3) = rand(3,3,3,3)
T = [cos(theta) sin(theta) 0;
-sin(theta) cos(theta) 0;
0 0 1];
T_z = T;
tensor_order = ndims(C);
el_n = numel(C);
C_tran = C;
C_tran(:) = 0;
iie = zeros(tensor_order,1); % initialise vector with indices of input tensor element
ioe = zeros(tensor_order,1); % initialise vector with indices of output tensor element
cum_vector = cumprod(3*ones(tensor_order,1))/3;
for i = 1:el_n, % loop over all output elements
ioe = mod(floor((i-1)./cum_vector),3)+1; % calculate indices of current output tensor element
for j = 1:el_n, % loop over all input elements
pmxx = 1; % initialise product of transformation matrices
iie = mod(floor((j-1)./cum_vector),3)+1; % calculate indices of current input tensor element
for k = 1:tensor_order % loop over all dimensions
pmxx = pmxx * T_z( ioe(k), iie(k) );
end
C_tran(i) = C_tran(i) + pmxx * C(j); % add product of transformation matrices and input tensor element to output tensor element
end
end
댓글 수: 0
답변 (1개)
per isakson
2021년 2월 25일
편집: per isakson
2021년 2월 25일
댓글 수: 2
per isakson
2021년 2월 26일
편집: per isakson
2021년 2월 26일
"but it's very slow" Do you mean more than one millisecond? What is an acceptable execution time?
"specially converting sum functions into a for loop" The function, sum(), doesn't appear in your code.
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!