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

조회 수: 4 (최근 30일)
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?

채택된 답변

John D'Errico
John D'Errico 2019년 5월 24일
편집: John D'Errico 2019년 5월 24일
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.

추가 답변 (1개)

Matt J
Matt J 2019년 5월 24일
편집: Matt J 2019년 5월 24일
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.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by