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??

 Respuesta aceptada

Honglei Chen
Honglei Chen el 31 de Oct. de 2012
Editada: Honglei Chen el 31 de Oct. de 2012

0 votos

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 comentarios

Berbia
Berbia el 31 de Oct. de 2012
I got it...Can I use dot(B,C)? Is both are same?
Honglei Chen
Honglei Chen el 31 de Oct. de 2012
Editada: Honglei Chen el 31 de Oct. de 2012
yes they are the same, but you should use
dot(B-C,B-C)
Matt J
Matt J el 31 de Oct. de 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 el 31 de Oct. de 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 el 31 de Oct. de 2012
I'd say
temp = B-C;
temp'*temp
Matt J
Matt J el 31 de Oct. de 2012
Editada: Matt J el 31 de Oct. de 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);

Iniciar sesión para comentar.

Más respuestas (1)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 31 de Oct. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by