在 Matlab 中使用给定数组线性化值的快速方法

在 Matlab 中使用给定数组线性化值的快速方法

我正在寻找一种快速方法来线性化 Matlab 中值之间的值。

例子:

a = ([10 20 30 40])
index = 1.5 //a float index
func(a,index); //shall return a value between index 1 and 2. In this case would be the value 15.
Ans = 15

答案1

// define a function that interpolates a vector 'a' defined on a regular grid
// at interpolated support coordinates 'x'
f = @(a, x) interp1( 1:length(a), a, x);

// test vector (given by OP)
a=[10 20 30 40];
// this vector interpolated at coordinate 1.5 gives 15
// (can be a vector of coordinates)
f(a, 1.5)

做你想做的事。

该向量a包含要在间距均匀的坐标上进行插值的值,范围从 1 到长度a。为此,可以使用 Matlab 函数interp1,该函数根据给定的支撑点(第一个参数)、这些支撑点上的值(第二个参数)和请求的插值坐标(第三个参数)执行线性插值。但是,根据 OP 使用简短的特定函数调用进行插值的请求,此函数f允许a在特定坐标(或坐标向量)处插入向量,只要它们保持在 范围内[1,length(a)]

相关内容