Vectorise matrix element multiplication

조회 수: 1(최근 30일)
Divij Gupta
Divij Gupta 2021년 6월 22일
답변: KSSV 2021년 6월 22일
I want to find a way to vectorise the following operation:
  • Take q random elements from the cell Z (which is populated by matrices)
  • Multiply them together into a matrix
Here is how I am doing it right now:
combo_matrix = nchoosek(1:N,q);
H = zeros(2^(N/2));
for i = 1:combo
rand_index = randi(size(combo_matrix,1));
h = eye(2^(N/2));
for c = 1:q
h = h*Z{combo_matrix(rand_index,c)};
end
H = H + h;
combo_matrix(rand_index,:) = [];
end
H = complex(0,1)^(q/2) * H;

답변(1개)

KSSV
KSSV 2021년 6월 22일
If Z is a matrix. You can replace the loop:
for c = 1:q
h = h*Z{combo_matrix(rand_index,c)};
end
with
c = 1:q ;
h = prod(Z(combo_matrix(rand_index,c)))

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by