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

 Akzeptierte Antwort

Honglei Chen
Honglei Chen am 31 Okt. 2012
Bearbeitet: Honglei Chen am 31 Okt. 2012

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Kategorien

Mehr zu MATLAB Coder finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by