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

조회 수: 1(최근 30일)
Hari 2021년 7월 14일
댓글: Hari 2021년 7월 14일
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.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Simon Chan 2021년 7월 14일
Try this:
[Ny,Nx]=size(A);
[X,Y]=meshgrid(1:Nx,1:Ny);
w = (B(X)+B(Y))/2;
C = A.*w
##### 댓글 수: 1표시숨기기 없음
Hari 2021년 7월 14일
Thanks

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Image Analyst 2021년 7월 14일
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표시숨기기 없음
Hari 2021년 7월 14일
This works. But wouldn't this be slow if the matrix is very large?

댓글을 달려면 로그인하십시오.

### 범주

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by