|
Lee <kaloklee@gmail.com> wrote in message <be6e1c36-aa98-427b-b1d6-8ac03cc0f4ef@d45g2000hsc.googlegroups.com>...
> Hi,
>
> I need to compute a matrix, S.
> S is a m by m matrix. It is representing sum of squared deviations.
>
> Currently, it is computed using a for-loop:
>
> S=[];
> for i=1:N
> x=G(:,i)-g_bar;
> S=S+(x*x');
> end
>
> where the inputs are:
> G is a m by N matrix.
> G(:,i) is the ith column of G,
> g_bar is a m by 1 vector.
>
> If you write out this for-loop mathematically, you can see S is simply
> the sum of squared deviations. But is there a way to compute it from
> the inputs without such a for-loop?
------------
Yesterday I answered this same question in your previous thread with:
G2 = G-repmat(g_bar,1,N);
S = G2*G2';
Was there something objectionable with that answer? It gives the same answer as in your code (aside from the expected round-off errors) and avoids the for-loop construct.
Roger Stafford
|