フィルターのクリア

Scaling positive and negative weights

6 ビュー (過去 30 日間)
dave
dave 2013 年 9 月 22 日
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?

採用された回答

Image Analyst
Image Analyst 2013 年 9 月 22 日
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 件のコメント
dave
dave 2013 年 9 月 22 日
編集済み: dave 2013 年 9 月 22 日
Thanks, there's only the problem that one of weights will be zero. But I need all of them to be > 0. btw: Don't worry, this has nothing to do with any kind of homework..
Image Analyst
Image Analyst 2013 年 9 月 22 日
Add a very small amount, like eps
newSignal = signal - min(signal) + eps;

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by