【问题标题】:Extrapolating (converting) data based on Min and Max values根据最小值和最大值推断(转换)数据
【发布时间】:2012-12-18 19:20:42
【问题描述】:

我有一个大小为 10000 x 1 的列向量(不均匀分布),范围为 1 到 7。我想设置新的最小值和最大值(最小值 = 32,最大值 = 72)并外推之前的值(1 到 7)现在在新的范围内(32 到 72)。

【问题讨论】:

  • 我对你的问题有点不清楚。假设你有一个向量[1 4 7],你希望新向量是[32 20/3 72]吗?
  • 是的,完全正确。但是我的向量中的值不是均匀分布的,也不是以任何方式排序的。
  • 20/3 不在 32 和 72 之间
  • 感谢 Dan,Smash 的回答有效。 :)

标签: matlab statistics data-analysis


【解决方案1】:
A = 7*rand(10000,1);

B = (A-1)/6*(72-32)+32;

或一般来说:

minVal = 32;
maxVal = 72;

B = (A-min(A(:)))/(max(A(:))-min(A(:)))*(maxVal-minVal)+minVal;

【讨论】:

  • 在值 1 上试一试。您无需在此处指定元素运算符。
【解决方案2】:

这是你想要的吗?

old = [1 4 7];
new = (old - 1)/(7-1)*(72-32) + 32

结果:

new =
    32    52    72

似乎太容易了,我错过了什么吗?上面把4变成20/3的例子让我觉得我是!

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2021-10-30
    • 2017-07-25
    • 2017-08-17
    相关资源
    最近更新 更多