I normalize a vector V in MATLAB as following:
normalized_V = V/norm(V);
however, is it the most elegant (efficient) way to normalize a vector in MATLAB?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The original code you suggest is the best way.
Matlab is extremely good at vectorized operations such as this, at least for large vectors.
The built-in norm function is very fast. Here are some timing results:
V1 is calculated a second time here just to make sure there are no important cache penalties on the first call.
Timing information here was produced with R2008a x64 on Windows.
EDIT:
Revised answer based on gnovice’s suggestions (see comments). Matrix math (barely) wins:
IMHO, the difference between “norm(V)” and “sqrt(V’*V)” is small enough that for most programs, it’s best to go with the one that’s more clear. To me, “norm(V)” is clearer and easier to read, but “sqrt(V’*V)” is still idiomatic in Matlab.