How to perform elementwise multiplication between two matrices with different size or summation between two matrices with the same size

2 Ansichten (letzte 30 Tage)
Hello, imagine I have the following array:
f = 1:10;
x = -22:1:22;
y = -22:1:22;
[u,v] = meshgrid(x,y);
I wish to perform elementwise multiplication operation between 'f' and 'u' (I mean the final array must have numel(f)*numel(u) elements.) . How can I fo this efficiently (definitely I know how to do this using "for loop". this is time consuming.)? Moreover, Imagine that I want to sum "u" and "v" elementwisely which both of them have the same size (so the final array must have numel(u)*numel(v) elements.) . How to do this in order to have high speed?

Akzeptierte Antwort

Steven Lord
Steven Lord am 14 Dez. 2023
Let's look at the sizes of the arrays in question.
f = 1:10;
x = -22:1:22;
y = -22:1:22;
[u,v] = meshgrid(x,y);
whos f x y u v
Name Size Bytes Class Attributes f 1x10 80 double u 45x45 16200 double v 45x45 16200 double x 1x45 360 double y 1x45 360 double
I wish to perform elementwise multiplication operation between 'f' and 'u' (I mean the final array must have numel(f)*numel(u) elements.)
So do you specifically want the size of the output to be [10 45*45] = [10, 2025]? Since you're using a release that supports implicit expansion this is not that difficult.
A = reshape(f, numel(f), 1).*reshape(u, 1, numel(u));
whos A
Name Size Bytes Class Attributes A 10x2025 162000 double
How can I fo this efficiently (definitely I know how to do this using "for loop". this is time consuming.)? Moreover, Imagine that I want to sum "u" and "v" elementwisely which both of them have the same size (so the final array must have numel(u)*numel(v) elements.) . How to do this in order to have high speed?
So you want to just normally add u and v?
B = u+v;
whos B
Name Size Bytes Class Attributes B 45x45 16200 double
Or do you want to add each element of u to each element of v, not just corresponding elements?
C = reshape(u, numel(u), 1) + reshape(v, 1, numel(v));
whos C
Name Size Bytes Class Attributes C 2025x2025 32805000 double

Weitere Antworten (1)

Voss
Voss am 14 Dez. 2023
f = 1:10;
x = -22:1:22;
y = -22:1:22;
[u,v] = meshgrid(x,y);
whos
Name Size Bytes Class Attributes cmdout 1x33 66 char f 1x10 80 double u 45x45 16200 double v 45x45 16200 double x 1x45 360 double y 1x45 360 double
Note that u and v are 45x45 matrices, so each has 2025 elements.
Something along these lines may be what you are looking for:
fu = f(:).*u(:).'
fu = 10×2025
-22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -22 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -44 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -66 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -88 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -110 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -132 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -154 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -176 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -198 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220 -220
uv = u(:)+v(:).'
uv = 2025×2025
-44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by