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

 Accepted Answer

Honglei Chen
Honglei Chen on 31 Oct 2012
Edited: Honglei Chen on 31 Oct 2012
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 Comments

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

Sign in to comment.

More Answers (1)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!