How to perform mathematical operation between all elements of arrays with unequal numbers

4 visualizaciones (últimos 30 días)
I have two arrays A & B, being a nXm and a pXq array, repsctively. I want to take A(i,j) and multiply it in or subtract it from all elements of B. Then I will take the next element of A and so on. is it possible to do without using a loop on all elements?

Respuesta aceptada

John D'Errico
John D'Errico el 24 de Mayo de 2019
Editada: John D'Errico el 24 de Mayo de 2019
A = rand(2,3);
B = rand(4,5);
C = A + reshape(B,[1,1,size(B)]); % Addition
C = A - reshape(B,[1,1,size(B)]); % subtraction
size(C)
ans =
2 3 4 5
D = A .* reshape(B,[1,1,size(B)]); % multiplication
D = A ./ reshape(B,[1,1,size(B)]); % division
size(D)
ans =
2 3 4 5
This is possible as long as you have MATLAB release 2016b or later. Earlier releases will need to use bsxfun instead.
help bsxfun
Note that you use .* and ./ for elementwise multiplication/division, not the * or / operators.

Más respuestas (1)

Matt J
Matt J el 24 de Mayo de 2019
Editada: Matt J el 24 de Mayo de 2019
Here is how you would do the subtraction
A-reshape(B,1,1,p,q) %result is nXmXpxq
but it will work equally well with any other operation that supports implicit expansion.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by