Matrix Calculation Code help
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Fayyaz
le 23 Mar 2015
Modifié(e) : John D'Errico
le 23 Mar 2015
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.
0 commentaires
Réponse acceptée
John D'Errico
le 23 Mar 2015
Modifié(e) : John D'Errico
le 23 Mar 2015
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))
0 commentaires
Plus de réponses (1)
Guillaume
le 23 Mar 2015
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))
0 commentaires
Voir également
Catégories
En savoir plus sur Resizing and Reshaping 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!