필터 지우기
필터 지우기

Matrix Calculation Code help

조회 수: 2 (최근 30일)
Fayyaz
Fayyaz 2015년 3월 23일
편집: John D'Errico 2015년 3월 23일
Hi.
I have two matrices, both have order 81*2. The first matrix includes columns 1)zone no. (from 1 to 81, i.e "i") and 2) P values for these 81 zones. Similarly, the second matrix includes columns 1) zone no.(from 1 to 81, i.e "j") and 2) A values for these 81 zones.
I need to calculate a 81*81 matrix, which values should be according to the formula; Tij= Pi*Aj/ Sum(A). (i.e sum of A 2nd column as a one value).
Also the values for the T11=T22=.......=T81,81 should be equal to ZERO. (I need values only when i is Not equal to j)
I have also uploaded the files. Any help in this regard would be greatly appreciated. Thanks in advance.

채택된 답변

John D'Errico
John D'Errico 2015년 3월 23일
편집: John D'Errico 2015년 3월 23일
Easy, peasy. No need even for bsxfun.
Just use an outer product to form P(i)*A(j) as an 81x81 matrix. Then, since the sum of A is a scalar, divide by that sum.
P(:,2)*A(:,2).'/sum(A(:,2))

추가 답변 (1개)

Guillaume
Guillaume 2015년 3월 23일
If I understood correctly, this is one way to do what you want:
bsxfun(@times, P(:, 2), A(:, 2).') / sum(A(:, 2)) .* ~eye(size(P, 1), size(A, 2))

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by