Multipying each element of a matrix with average of elements in other matrix

1 vue (au cours des 30 derniers jours)
Hari
Hari le 14 Juil 2021
Commenté : Hari le 14 Juil 2021
I have a 3x3 matrix(A) with all diagonal elements 0, and 3x1 matrix(B). I want to multiply each element of the 3x3 matrix using elements from the 3x1 matrix in the following way: element A(1,2) will be multipled by the average of elements at position 1 and 2 in B.
Similarly each element in A will be multiplied by average of corresponding elements in B.
Is there a way to do this.

Réponse acceptée

Simon Chan
Simon Chan le 14 Juil 2021
Try this:
[Ny,Nx]=size(A);
[X,Y]=meshgrid(1:Nx,1:Ny);
w = (B(X)+B(Y))/2;
C = A.*w

Plus de réponses (1)

Image Analyst
Image Analyst le 14 Juil 2021
Did you try the obvious and simple for loop?
% Create sample data.
A = rand(3);
A(logical(eye(3))) = 0
B = rand(3, 1)
% Now we have our data and can begin...
for col = 1 : 3
for row = 1 : 3
factor = mean([B(row), B(col)]);
A(row, col) = factor * A(row, col);
end
end
A % Show in command window.
  1 commentaire
Hari
Hari le 14 Juil 2021
This works. But wouldn't this be slow if the matrix is very large?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices 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