我希望有一个类似于这个Arduino函数的MATLAB函数: http://arduino.cc/en/Reference/map
基本上我有一个基于时间的变量,有67个数据点,范围从0到1.15,我想将它从0到100%映射(所以,101个数据点)。在Arduino中看起来像:
map(value, fromLow, fromHigh, toLow, toHigh)
我可以在MATLAB中使用interp1来获取101个数据点,但我只得到0到1.15之间的101个数据点。我知道我可以将每个值乘以100 / 1.15,但这是不准确的。在MATLAB中有一种更优雅的方式可以忽略它吗?
(这篇文章看起来很有希望,但这不是我想要的: Map function in MATLAB?)
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您有神经网络工具箱,那么您可以尝试mapminmax功能。默认情况下,函数映射到[-1 1],并从数据中获取输入边界。但我相信,使用您的值填充settings
结构,然后调用mapminmax
应该会有所帮助。
答案 2 :(得分:0)
FEX提交maptorange可以做到这一点。它采用初始值,其起源范围以及应将其映射到的范围,并返回映射后的值。在您的示例中,应该是:
maptorange(values, [0 1.15], [0 100]);
(这是线性映射。脚本也可以沿指数函数映射。)
要从67到101的值,您确实需要插值。这可以在映射之前或之后完成。