issue in matrix multiplication
2 views (last 30 days)
Show older comments
G=[1 1 1 1 1 0 0 0 1 0 0 0; 0 0 1 1 0 0 0 1 0 1 0 0; 1 1 1 0 1 0 0 1 0 0 1 0; 1 0 0 1 1 1 0 1 0 0 0 1];
m=[1 0 1 0]
how to multiply them??
0 Comments
Accepted Answer
Youssef Khmou
on 4 Dec 2013
Edited: Youssef Khmou
on 4 Dec 2013
G is 4x12 and m is 1x4, then two possibilities :
m*G
G'*m'
You do not get binary result because of the multiplication cij=sum a_ik b_kj there is an addition. you can get binary results if the matrices have the same dimensions and you use Hadamard product :
m=m'
M=zeros(4,12);
for n=1:12
M(:,n)=m;
end
M.*G
0 Comments
More Answers (4)
Wayne King
on 4 Dec 2013
Edited: Wayne King
on 4 Dec 2013
G=[1 1 1 1 1 0 0 0 1 0 0 0; 0 0 1 1 0 0 0 1 0 1 0 0; 1 1 1 0 1 0 0 1 0 0 1 0; 1 0 0 1 1 1 0 1 0 0 0 1];
m=[1 0 1 0];
out = m*G;
How else would you presume to multiply them?
Walter Roberson
on 4 Dec 2013
G is 12 x 4, and m is 1 x 4, so there is no direct way to multiply them. You can, however, use
G * m.'
to get 12 x 1, or you can use
m * G.'
to get 1 x 12
Possibly what you want is
G .* repmat(m.', 1, size(G,2))
sixwwwwww
on 4 Dec 2013
mary you can get desired output as follows:
G = [1 1 1 1 1 0 0 0 1 0 0 0; 0 0 1 1 0 0 0 1 0 1 0 0; 1 1 1 0 1 0 0 1 0 0 1 0; 1 0 0 1 1 1 0 1 0 0 0 1]';
m = [1 0 1 0];
idx = find(m);
result = zeros(1, size(G, 1));
for i = 1:size(G, 1)
result(i) = sum(G(i, min(idx):max(idx)));
end
disp(result)
Do you need this?
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!