Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
computing sum of squared deviations without a for-loop

Subject: computing sum of squared deviations without a for-loop

From: Lee

Date: 26 Oct, 2008 14:08:37

Message: 1 of 3

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?

Subject: computing sum of squared deviations without a for-loop

From: Roger Stafford

Date: 26 Oct, 2008 19:42:01

Message: 2 of 3

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

Subject: computing sum of squared deviations without a for-loop

From: dpb

Date: 29 Oct, 2008 13:32:23

Message: 3 of 3

Lee wrote:
...
> 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?

doc std

Specifically, look at the optional arguments--don't they allow the
requested?

--

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us