How do I multiply two 'int32' data type matrices in MATLAB?
Mostrar comentarios más antiguos
I would like to multiply a variable of size of (100,100) with another variable of size (100,100). Both of the variables are in 'int32' format.
Respuesta aceptada
Más respuestas (2)
Richard Zapor
el 31 de Jul. de 2020
function z = mtimes(x,y)
if (isscalar(x) || isscalar(y))
z = x .* y;
return;
end
m = size(x,1);
n = size(x,2);
if (n ~= size(y,1))
error('mmultmanual:size', 'matrix inner dimensions do not agree');
end
p = size(y,2);
z = zeros(m,p,class(x));
%May be faster than bsxfun
for rx=1:m
for cy=1:p
z(rx,cy)=sum(x(rx,:)'.*y(:,cy));
end
end
end
Richard Zapor
el 31 de Jul. de 2020
A special case of uint32/64 matrix multiply is where x is a binary matrix and y is a uint32/64 vector.
This can be calculated very quickly and outputs a uint32/64 vector.
function z=bintimes64(x,y)
% z=x*y [m,n]*[n,1], where x is a binary matrix(real/int) and y is a vector uint64/uint32
% no error checking included
[m,n]=size(x);
z = zeros(m,1,class(y));
for j=1:n
v=x(:,j)==1;
z(v)=z(v)+y(j);
end
end
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!