# how to multiply every single element in a matrix to entire of another matrix?

3 visualizzazioni (ultimi 30 giorni)
majid il 7 Apr 2024
Modificato: majid il 7 Apr 2024
Hello.
I want to multiply every single element in a matrix to entire of another matrix.
x = [100,500,900,1300,1700;
120,600,1080,1560,2040;
140,700,1260,1820,2380;
160,800,1440,2080,2720;
180,900,1620,2340,3060];
z = rand (4,20);
I want to multiply 100 to entire z and then 500 and so on... but when each multipication occured saved it in new indexed parameter.
how can I do this?
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Paul il 7 Apr 2024
Here's one option to store each result in a cell array that's the same size as x
x = [100,500,900,1300,1700;
120,600,1080,1560,2040;
140,700,1260,1820,2380;
160,800,1440,2080,2720;
180,900,1620,2340,3060];
%z = rand (4,20);
z = [1 2;3 4]; % small z for example
S = cellfun(@(x) x*z,mat2cell(x,ones(1,size(x,1)),ones(1,size(x,2))),'Uni',false)
S = 5x5 cell array
{2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double}
% check
S{1,1} - x(1,1)*z
ans = 2x2
0 0 0 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
S{3,3} - x(3,3)*z
ans = 2x2
0 0 0 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
##### 6 CommentiMostra 4 commenti meno recentiNascondi 4 commenti meno recenti
Bruno Luong il 7 Apr 2024
Modificato: Bruno Luong il 7 Apr 2024
Shorter
x = [100,500,900,1300,1700;
120,600,1080,1560,2040;
140,700,1260,1820,2380;
160,800,1440,2080,2720;
180,900,1620,2340,3060];
%z = rand (4,20);
z = [1 2;3 4]; % small z for example
S = arrayfun(@(xij) xij*z,x,'Uni',false)
S = 5x5 cell array
{2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double}
majid il 7 Apr 2024
thank you for guiding me.

Accedi per commentare.

### Più risposte (2)

Steven Lord il 7 Apr 2024
If you're asking can you dynamically create variables with numbered names like x1, x2, x3, etc.? Yes.
Should you do this? The general consensus is no. That Discussions post explains why this is generally discouraged and offers several alternative approaches.
One such approach is to use pages of a 3-dimensional array.
x = [100,500,900,1300,1700;
120,600,1080,1560,2040;
140,700,1260,1820,2380;
160,800,1440,2080,2720;
180,900,1620,2340,3060];
z = rand (4,20);
zv = reshape(z, 1, 1, []);
result = x.*zv;
To check:
isequal(result(:, :, 42), x.*z(42))
ans = logical
1
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
majid il 7 Apr 2024
Modificato: majid il 7 Apr 2024
thankyou for answering.

Accedi per commentare.

Bruno Luong il 7 Apr 2024
Modificato: Bruno Luong il 7 Apr 2024
x = [100,500,900,1300,1700;
120,600,1080,1560,2040;
140,700,1260,1820,2380;
160,800,1440,2080,2720;
180,900,1620,2340,3060];
%z = rand (4,20);
z = [1 2;3 4]; % small z for example
[mx,nx] = size(x);
[mz,nz] = size(z);
C = mat2cell(kron(x,z),repelem(mz,mx),repelem(nz,nx))
C = 5x5 cell array
{2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double} {2x2 double}
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
majid il 7 Apr 2024
Modificato: majid il 7 Apr 2024
thankyou for answering .

Accedi per commentare.

### Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by