the description below .. for loop and matrices

조회 수: 1 (최근 30일)
Matthew Worker
Matthew Worker 2021년 6월 26일
댓글: Rena Berman 2021년 12월 16일
% when o=1 I want to multiply the second row of H with the second column of W and sum it with the multiplication of the third row of H with the third column of W and the multiplication of the fourth row of H with the fourth column of W.
% when o=2 I want to multiply the first row of H with the first column of W and sum it with the multiplication of the third row of H with the third column of W and the multiplication of the fourth row of H with the fourth column of W.
% when o=3 I want to multiply the first row of H with the first column of W and sum it with the multiplication of the second row of H with the second column of W and the multiplication of the fourth row of H with the fourth column of W.
% and so on .....
clc;
clear;
H=[1 2 2 1 ; 3 1 1 2;1 3 2 4;2 1 3 5]
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4]
for o=1:4
p = abs(H(o,:)*W(:,o))
end

채택된 답변

Walter Roberson
Walter Roberson 2021년 6월 26일
H=[1 2 2 1 ; 3 1 1 2;1 3 2 4;2 1 3 5]
H = 4×4
1 2 2 1 3 1 1 2 1 3 2 4 2 1 3 5
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4]
W = 4×4
4 1 2 1 1 3 2 1 2 1 1 3 2 1 1 4
locs = [2 2 3 3 4 4;
1 1 3 3 4 4;
1 1 2 2 4 4];
for o = 1 : size(locs,1)
p(o) = H(locs(o,1),:)*W(:,locs(o,2)) + H(locs(o,3),:)*W(:,locs(o,4)) + H(locs(o,5),:)*W(:,locs(o,6));
end
p
p = 1×3
55 58 53
  댓글 수: 6
Walter Roberson
Walter Roberson 2021년 6월 27일
Suppose for discussion that H is 4 x 3, and W is 5 x 4
H=[1 2 2; 3 1 1;1 3 2;2 1 3]
H = 4×3
1 2 2 3 1 1 1 3 2 2 1 3
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4; 1 2 4 5]
W = 5×4
4 1 2 1 1 3 2 1 2 1 1 3 2 1 1 4 1 2 4 5
Now for the first iteration, you define
o = 1
p = abs(H(o,:)*W(:,o))
H(o,:) is 1 x 3 and W(:,o) is 5 x 1. But you cannot use * between a 1 x 3 and a 5 x 1.
Your definitions cannot work unless you define that W has the same number of rows that H has columns -- which you do not do.
If you had defined
p = abs(W(:,o)*H(o,:))
then that would work, giving a 5 x 3 result.
Which do you want? That each entry should be size(W,1) x size(H,2) ? Or that each entry should be 1 x 1, in which case you would have to define H as having the same number of columns as W has rows.
Matthew Worker
Matthew Worker 2021년 6월 27일
편집: Leo Map 2021년 6월 27일
you are right, W has the same number of rows that H has columns,but ... when (i=1) I need the multiplication of the first row of H and the first column of W and put it in variable Alfa_1 and then multiplying separately the second row of H and the second column of W and sum it with the multiplication of the third row of H and the third column of W and sum it with the multiplication of the fourth row of H and the fourth column of W and put the sum in Alfa_2.
... when (i=2) I need the multiplication of the second row of H and the second column of W and put it in variable Alfa_1 and then multiplying separately the first row of H and the first column of W and sum it with the multiplication of the third row of H and the third column of W and sum it with the multiplication of the fourth row of H and the fourth column of W and put the sum in Alfa_2.
and goes like this.
I'm sorry because I didn't describe clearly what I need.
Thank you

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by