Azzera filtri
Azzera filtri

Speed up 1D spline interpolation on matrix

3 visualizzazioni (ultimi 30 giorni)
T
T il 13 Set 2017
Modificato: Matt J il 14 Set 2017
Hello,
I have a NxM matrix named data and I need to spline interpolate each row of my matrix according to:
for k=1:size(data,1)
data(k,:)=spline( x , data(k,:).', x + shift(k,:).' );
end
where x is the original monotonously increasing spacing of each row. And the NxM matrix shift is the row- and column-dependent shift that I want to apply to each sample.
Is there a way to speed this up further? I found a lot of functions that claim a speed improvement of x10 for linear interpolation. Anything I can do for spline?
Thanks!

Risposte (1)

Matt J
Matt J il 13 Set 2017
Modificato: Matt J il 14 Set 2017
It might help to pose it as a 2D interpolation,
[m,n]=size(data);
idx=1:n;
F=griddedInterpolant({x,idx},data,'cubic');
uu= x+shift.';
vv=repmat(idx,m,1);
data=reshape( F([uu(:),vv(:)]), m,n) ;

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by