Scaling positive and negative weights
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Image Analyst
el 22 de Sept. de 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 comentarios
Image Analyst
el 22 de Sept. de 2013
Add a very small amount, like eps
newSignal = signal - min(signal) + eps;
Más respuestas (0)
Ver también
Categorías
Más información sobre Spectral Measurements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!