我正在寻找一种快速方法来线性化 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)]
。