ppval を使用して区分的多項式スプラインから一連の値を評価するループがあります。補間はループの中で最も時間のかかる部分であり、関数の効率を改善する方法を探しています。
より具体的には、有限差分スキームを使用して、摩擦溶接部の過渡温度分布を計算しています。これを行うには、時間ステップごとに材料特性を (温度と位置の関数として) 再計算する必要があります。レート制限要因は、これらの値の補間です。別の有限差分スキーム (時間領域での制限が少ない) を使用することもできますが、可能であれば、私が持っているものに固執したいと思います。
以下に MWE を含めました。
x=0:.1:10;
y=sin(x);
pp=spline(x,y);
tic
for n=1:10000
x_int=10*rand(1000,1);
y_int=ppval(pp,x_int);
end
toc
plot(x,y,x_int,y_int,'*') % plot for sanity of data
Elapsed time is 1.265442 seconds.
編集-値間の単純な線形補間に満足しているが、interp1関数はppvalよりも遅いことにおそらく言及する必要があります
x=0:.1:10;
y=sin(x);
tic
for n=1:10000
x_int=10*rand(1000,1);
y_int=interp1(x,y,x_int,'linear');
end
toc
plot(x,y,x_int,y_int,'*') % plot for sanity of data
Elapsed time is 1.957256 seconds.