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 中查找有关 Random Number Generation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by