Is A./B different from B.\A?

조회 수: 43(최근 30일)
Oliver Woodford
Oliver Woodford 2015년 6월 17일
편집: James Tursa 2021년 10월 29일
Given two matrices, A and B, will A./B ever give a different answer from B.\A, or are these two expressions equivalent?
It seems that even for complex numbers they return the same thing. E.g.
>> A = sqrt(randn(3));
>> B = sqrt(randn(3));
>> isequal(A./B, B.\A)
ans = 1
  댓글 수: 3
Stephen23
Stephen23 2015년 6월 17일
According to the documentation A.\B and B./A are the same:
  • ldivide: " B.\A divides each element of A by the corresponding element of B"
  • rdivide: " A./B divides each element of A by the corresponding element of B"
Unless the definition of "divide" is different, then these should be the same.

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

채택된 답변

James Tursa
James Tursa 2015년 6월 17일
I can't think of any reason why one would ever get different results for numeric types. I suppose there might be speed differences if one form used multi-threading and the other form didn't, but in tests I just ran they both appeared to take about the same amount of time.
User defined classes could of course overload them differently.
  댓글 수: 6
James Tursa
James Tursa 2021년 10월 29일
편집: James Tursa 2021년 10월 29일
Yes, your expectations are correct. For the MATLAB toolbox quaternion class objects, the q./p and p.\q operations are implemented as expected by multiplying by the inverse, and since multiplication is non-commutative you get different results.
>> x = rand(1,4)-0.5; x = x/norm(x); q = quaternion(x);
>> x = rand(1,4)-0.5; x = x/norm(x); p = quaternion(x);
>> q
q =
quaternion
-0.62168 + 0.46748i + 0.58112j + 0.23933k
>> p
p =
quaternion
0.64169 + 0.60532i - 0.26832j + 0.38709k
>> q./p
ans =
quaternion
-0.17923 + 0.38713i + 0.24217j + 0.87141k
>> p.\q
ans =
quaternion
-0.17923 + 0.96545i + 0.17j - 0.082977k
>> q*conj(p)
ans =
quaternion
-0.17923 + 0.38713i + 0.24217j + 0.87141k
>> conj(p)*q
ans =
quaternion
-0.17923 + 0.96545i + 0.17j - 0.082977k
>> which quaternion
C:\Program Files\MATLAB\R2020a\toolbox\shared\rotations\rotationslib\@quaternion\quaternion.m % quaternion constructor
Note that the / and \ operators are not implemented for this class:
>> q/p
Error using /
Arguments must be numeric, char, or logical.
>> p\q
Error using \
Arguments must be numeric, char, or logical.

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

추가 답변(2개)

Alberto
Alberto 2015년 6월 17일
Both are pointwise, but A./B divides every element in A by the same element in B. A.\B divides every element in B by the same element in A.
  댓글 수: 1
Oliver Woodford
Oliver Woodford 2015년 6월 17일
I didn't ask about A.\B though

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


H. Sh. G.
H. Sh. G. 2021년 9월 28일
Hi every body.
I wonder what kind of calculations the division of a matrix (X) by a row vector (y), i.e. X/y, does, where both have the same number of columns.
The result is a column vector of the same number of rows that X has.
Recall that X./y divides all elements of each column in X by the element of y in the same column, resulting in a matrix with the same size of X.
  댓글 수: 4
H. Sh. G.
H. Sh. G. 2021년 9월 29일
Thanks Bruno,
This explains my question well.

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

Community Treasure Hunt

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

Start Hunting!

Translated by