Effacer les filtres
Effacer les filtres

Is there a function that performs element by element multiplication between two variables and stores in one of the variable by default?

3 vues (au cours des 30 derniers jours)
I want to do this operation
A = A.*B;
Is there a function
func(A, B)
that multiplies A and B and saves the result in A? If not how do we create such a function?
  3 commentaires
D_coder
D_coder le 16 Sep 2018
because i want to use it in a function as an argument directly inside a loop that runs about 10K times
Bruno Luong
Bruno Luong le 18 Sep 2018
Modifié(e) : Bruno Luong le 18 Sep 2018
It seems MATLAB (at least with R2018b) is intelligent enough to do inplace product when calling A=A.*B as shows bellow (the pr address is dd885ac0 and does not change after calling mtimes):
>> format debug
>> a=rand(1,3)+1i*rand(1,3)
a =
Structure address = d743b820
m = 1
n = 3
pr = dd885ac0
0.9572 + 0.1419i 0.4854 + 0.4218i 0.8003 + 0.9157i
>> b=rand(1,3)+1i*rand(1,3)
b =
Structure address = d743b890
m = 1
n = 3
pr = de61eb00
0.7922 + 0.0357i 0.9595 + 0.8491i 0.6557 + 0.9340i
>> a = a .* b
a =
Structure address = d743b820
m = 1
n = 3
pr = dd885ac0
0.7532 + 0.1466i 0.1076 + 0.8168i -0.3305 + 1.3479i
>> c = a .* b
c =
Structure address = d743bd60
m = 1
n = 3
pr = 2ea50160
0.5915 + 0.1430i -0.5904 + 0.8751i -1.4757 + 0.5752i
>>

Connectez-vous pour commenter.

Réponses (2)

dpb
dpb le 16 Sep 2018
Modifié(e) : dpb le 16 Sep 2018
Sure, there's a function for virtually everything in Matlab...all operators are are aliases for the underlying functions.
>> help times
.* Array multiply.
X.*Y denotes element-by-element multiplication. ....
...
A=times(A,B);
is functional form for A.*B but that's as far as you can get towards the Q?.
There is no syntax that supports in-place storage into one of a function's actual arguments as you're asking for. You can only store results of a function return to an assignable object on the LHS of an expression or use the results in an expression.
  9 commentaires

Connectez-vous pour commenter.


Bruno Luong
Bruno Luong le 17 Sep 2018
Modifié(e) : Bruno Luong le 17 Sep 2018
If you download this FEX
there is inplaceprod.c C-file that allows to perform inplace element-wise product of vector via MEX.
You'll be careful to use such inplace operation since it is not meets MATLAB specification and can produce unexpected side effect.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by