matrix multiplication

Hello,
I m wrinting a code for itertaive closest point and i got this error
??? Error using ==> mtimes
Inner matrix dimensions must agree.
RR=V * U';
V and U are two matrix in diffent size what do you think ?

 采纳的回答

It's just telling you that the two matrices are not conformable for multiplication. The number of columns in V has to match the number of rows in U'
RR = randn(10,10)*(randn(2,10))'; % is ok
RR = randn(10,10)*(randn(10,12))'; % is not

2 个评论

ok so it must that the number of rows = colomns !!
and what is the diffrence between * and .* ?
.* is element by element multiplication so,
x = randn(10,1);
y = randn(10,1);
z = x.*y; % this is ok -- multiply x and y element by element
but
x*y % errors

请先登录,再进行评论。

更多回答(2 个)

Please try the following:
[M,N] = size(V);
[P,Q] = size(U');
if N==P
fprintf('ok\n\n');
else
fprintf('error\n\n');
end
Using * by itself will perform matrix multiplication, whereas using .* will perform element-by-element multiplication.
  • For matrix multiplication, e.g. A*B, the number of columns in A must equal the number of rows in B.
  • For element-by-element multiplication, e.g. A.*B, the size and shape of both A and B must be exactly the same. In other words, if A is M x N, then B must also be M x N.
  • For more information, please see: Arithmetic Operators
  • You can use the size function to compute the size and shape of any given array.
  • You can use the assert function to test for the truth of a logical expression. For example:
assert(size(A,2) == size(B,1), ...
'The inner dimensions of A and B do not agree.');
HTH.
Rick

1 个评论

thank you Rick
this is very helpful
I should then review my code and verify the sizes of matrix

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by