Normalize to unit norm

I have a variable containing a probability distribution (just an one-dimensional array of values). How can I normalize a to unit norm?

 采纳的回答

If you want to normalize a vector to have unit L2 norm.
x = randn(100,1);
x = x./norm(x,2);
norm(x,2)

12 个评论

Thanks, Wayne, for your quick reply :) However, I don't understand. My values in x should add up to 1, but I can't find the new array of elements in x with the new values that would add up to 1.
They're in ans.
ANS is just a value (1), is not an array of values that add up to zero.
My mistake, ans proves that the x values are normalized to a unit L2 norm.
when I sum(x) after the second line, the sum doesn't add up to 1.
Help!!!
x./sum(x)
Now, this is not a unit norm normalization (as I understand it, thus nobody answered earlier).
What is a unit norm normalization as you understand it?
"Unit norm" itself is not well-defined without specifying the norm itself.
@Nuchto, it sounds like you are looking for the l1 norm, while the initial answer provided by @Wayne is using the l2 norm...
As @Oleg suggested, you can normalize by the sum to obtain the same as the following
normX = x/norm(x,1)
Be careful if simply normalizing by the sum because it doesn't account for negative values in the original vector. However, since you are working with a probability distribution, that isn't an issue.
"same as the following
normX = x/norm(x,1)"
IF all x >0.
Thanks, it works now. What is in lay terms :) the difference between l1 and l2 norm?
http://en.wikipedia.org/wiki/Norm_%28mathematics%29, Euclidean vs taxicab

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by