Scaling positive and negative weights
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I have a vector that contains positive as well as negative weights. For example:
0.75
-0.14
-0.92
0.56
-0.28
...
Now I need a way to transform these weights so that...
- all weights will be positive.
- each weight will be greater than 0 and smaller than 1.
- the weights sum to 1.
- the more negative the original weight, the lower its new value should be.
How would I do that?
0 commentaires
Réponse acceptée
Image Analyst
le 22 Sep 2013
Just scale linearly - at least that's one of an unlimited number of ways:
% Declare random sample data.
signal = 20*rand(1,10)-10
% Offset so that the min of the new signal is at zero.
newSignal = signal - min(signal);
% Make the new signal sum to 1
newSignal = newSignal / sum(newSignal)
% Print out the sum, just to check.
fprintf('The sum is %f.\n', sum(newSignal));
3 commentaires
Image Analyst
le 22 Sep 2013
Add a very small amount, like eps
newSignal = signal - min(signal) + eps;
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multirate Signal Processing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!