
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
。これを実現するには、interp1
サポート ポイント (最初の引数)、これらのサポート ポイント上の値 (2 番目の引数)、および要求された補間座標 (3 番目の引数) を指定して線形補間を実行する Matlab 関数 を使用できます。ただし、短い特定の関数呼び出しで補間を実行するという OP の要求により、この関数では、範囲 内にある限り、特定の座標 (または座標のベクトル) でf
ベクトルを補間できます。a
[1,length(a)]