Hello,
I was hoping that perhaps somebody could help me out with a problem that I have. It is a relatively simple operation (a weight average), just difficult to code.
Say I import 2 3×3 matrices into a cell array using the code below.
C = cell(2,1); for ii = 1:2C{ii} = importdata(['matrix' num2str(ii) '.txt']) ; end
These matrices are transitional probability matrices.
I would like to calculate a weighted 'average' matrix of these 2 matrices. Unfortunately I cannot simply just calculate the average, its needs to be a weighted average.
Say for example the 2 matrices are:
0.0 0.5 0.5 2A = 0 0 1 4 0 0.6 0.4 7 0.2 0.0 0.8 5B = 0 0 0 0 0.3 0.0 0.7 3
The 4th column contains the number of counts for that particular row.
The weighted average formula would be
P(x) = P_A(x) x [1-B_N/(A_N+B_N)] + P_B(x) x [1-A_N/(A_N+B_N)]
Where,
P_A(x) represents the probability value in the same row at cell x for matrix A.
P_B(x) is the same thing for matrix B.
A_N is the total number of counts for the same row we are dealing with in matrix A
B_N is the total number of counts for the same row we are dealing with in matrix B
Using the numbers, the first cell would be:
= 0 x [1-5/(2+5)] + 0.2 x [1-2/(2+5)] = 0.14
So the full weighted average matrix would be
0.14 0.14 0.71C= 0 0 1 0.1 0.4 0.5
I would really appreciate any help to code this as I'm fairly inexperienced with matlab. In practice I have about 100 matrices but I just presented 2 as an example.
Sincere Thanks
John
Best Answer