5

我希望有一个类似于这个 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 中有没有更优雅的方法来做到这一点?

(这篇文章看起来很有希望,但这不是我要找的: MATLAB 中的映射函数?

谢谢

4

3 回答 3

0

linspace例如,您可以使用

linspace(0,1.15,101)

会让你得到 101 分,在 0 和 1.15 之间均匀分布。

于 2013-07-12T22:51:32.263 回答
0

如果你有可用的神经网络工具箱,那么你可以试试mapminmax函数。默认情况下,函数映射到 [-1 1] 区间并从数据中获取输入边界。但我相信settings用你的价值观填充结构然后打电话mapminmax应该会有所帮助。

于 2013-07-13T10:12:30.820 回答
0

我的 FEX 提交maptorange可以做到这一点。它获取初始值、它们的来源范围以及它们应该映射到的范围,并返回映射的值。在您的示例中,这将是:

maptorange(values, [0 1.15], [0 100]);

(这是假设线性映射。脚本也可以沿着指数函数映射。)

要从 67 到 101 值,您确实需要插值。这可以在映射之前或之后完成。

于 2019-02-01T16:15:31.807 回答