square of a vector

I have to calculate a square of vector which should results a scalar value. i.e) A=(B-C)^2 B and C are vectors and I need A as a scalar. How can I implement this in matlab??

 Réponse acceptée

Honglei Chen
Honglei Chen le 31 Oct 2012
Modifié(e) : Honglei Chen le 31 Oct 2012

0 votes

My guess is you need an inner product, i.e. A = |B-C|^2, you can do it many different ways, one way is
B = ones(3,1);
C = ones(3,1);
A = (B-C)'*(B-C)

6 commentaires

Berbia
Berbia le 31 Oct 2012
I got it...Can I use dot(B,C)? Is both are same?
Honglei Chen
Honglei Chen le 31 Oct 2012
Modifié(e) : Honglei Chen le 31 Oct 2012
yes they are the same, but you should use
dot(B-C,B-C)
Matt J
Matt J le 31 Oct 2012
No. You could do dot(B-C,B-C) or, more efficiently
tmp=B-C;
A=dot(tmp,tmp);
The DOT command is relatively slow, though, in case that matters.
Berbia
Berbia le 31 Oct 2012
Thanks a lot...I have to do this operation repeatedly in loop. which is more efficient, whether tmp=B-C; dot(tmp,tmp); or norm(B-C)^2?
Honglei Chen
Honglei Chen le 31 Oct 2012
I'd say
temp = B-C;
temp'*temp
Matt J
Matt J le 31 Oct 2012
Modifié(e) : Matt J le 31 Oct 2012
You should think about whether the loop can be avoided altogether, since this sounds like a very vectorizable operation. If B and C are matrices and you want the dot product along columns, for example
temp=B-C;
result = sum(temp.^2,1);

Connectez-vous pour commenter.

Plus de réponses (1)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by