1D griddedInterpolant of a vector of query points.

2 次查看(过去 30 天)
Is it possible to use griddedInterpolant in a vectorized form? I have a vector function f sampled over time domain t which must be interpolated.
The following relations follow: size(t,2) = size(f,2) and size(t,1) < size(f,1).
Here is a simple example that works with interp1 and spline.
Is there a way to achieve the same outcome with griddedInterpolant?
% works!
t = linspace(0,5,100);
f = [sin(t); cos(t)]; % define some vector function
pp = interp1(t, f', 'pchip','pp'); % warning, Matlab suggests to use griddedInterpolant
% or
pp2 = spline(t, f);
% This throws an error:
F = griddedInterpolant(t, f); % ! how to make use of this function with a vector function? !
f = sin(t) % now f is a scalar function
F = griddedInterpolant(t, f); % now this line works
  2 个评论
Star Strider
Star Strider 2020-4-22
I get no errors (R2020a) with everything except the griddedinterpolant call (that I did not run). What do you want to do? What result do you want?
Maverick
Maverick 2020-4-22
编辑:Maverick 2020-4-22
Please, try to run griddedinterpolant command since it does produce an error (at least on R2017b). I must interpolate a 1D vector function (i.e. a function, that has stacked multiple values at a time instant). Variable f above is a simple example of a 2-vector function. This code works with interp1 or spline, as I showed in the example. However, I want to use griddedinterpolant and check if it is more efficient thatn those counterparts.
I know that presented syntax would work if size(f,1) was equal to 1, however, I don't know how to apply griddedInterpolant to a vector function, or whether it is even possible?

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2020-5-8
编辑:Matt J 2020-5-8
One way:
rows=1:2;
gI= griddedInterpolant({rows,t},f);
F=@(t)gI({rows,t});
>> F(3)
ans =
0.1411
-0.9897
Another way:
Fsin = griddedInterpolant(t, sin(t));
Fcos = griddedInterpolant(t, cos(t));
F=@(t)[Fsin(t);Fcos(t)];

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

标签

产品


版本

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by