the description below .. for loop and matrices

5 views (last 30 days)
% 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

Accepted Answer

Walter Roberson
Walter Roberson on 26 Jun 2021
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 Comments
Walter Roberson
Walter Roberson on 27 Jun 2021
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 on 27 Jun 2021
Edited: Leo Map on 27 Jun 2021
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

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!