I want to convert values in a table column to a range of -1 to 1 units.
My -1 value is -800
My 0 value is 300
My 1 value is 800
The column values go from 0 to 800.
How can I do this?
Thanks!

1 件のコメント

the cyclist
the cyclist 2021 年 9 月 20 日
編集済み: the cyclist 2021 年 9 月 20 日
x = [-800 300 800];
y = [-1 0 1];
figure
h = plot(x,y,'.:');
set(h,'MarkerSize',32)
Nina, an infinite number of curves can be drawn through the three points you have specified. None of them are linear (so it is not what I would think of as a simple "conversion".)
Do you have any additional information that would be helpful in what you are trying to do? As I have mentioned in another of your questions, please try to be complete in what you are asking for.

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

 採用された回答

Walter Roberson
Walter Roberson 2021 年 9 月 21 日

0 投票

values = randi([0 800], 1, 10)
values = 1×10
709 747 795 14 63 285 232 537 508 183
b = [-800 300 800];
mask = values < b(2);
scaled(mask) = (values(mask)-b(1))./(b(2)-b(1));
scaled(~mask) = (values(~mask)-b(2))./(b(3)-b(2));
scaled
scaled = 1×10
0.8180 0.8940 0.9900 0.7400 0.7845 0.9864 0.9382 0.4740 0.4160 0.8936

その他の回答 (0 件)

カテゴリ

製品

リリース

R2021a

質問済み:

2021 年 9 月 20 日

編集済み:

2021 年 9 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by