1D griddedInterpolant of a vector of query points.

1 回表示 (過去 30 日間)
Maverick
Maverick 2020 年 4 月 22 日
編集済み: Matt J 2020 年 5 月 8 日
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 Center および File ExchangeInterpolation についてさらに検索

タグ

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by