Pour une affectation universitaire, je dois interpoler certains points que j'avais précédemment échantillonnés à partir d'une onde. Cela fonctionne tant que je les interpole avec la fonction interp1
.Utilisation de la fonction sinc pour l'interpolation
Mon professeur nous veut interpoler en utilisant la fonction sinc
, donc je googlé et la documentation MathWorks dit que je devrais faire ceci:
rng default
t = 1:10;
x = randn(size(t))';
ts = linspace(-5,15,600);
[Ts,T] = ndgrid(ts,t);
y = sinc(Ts - T)*x;
plot(t,x,'o',ts,y)
xlabel Time, ylabel Signal
legend('Sampled','Interpolated','Location','SouthWest')
legend boxoff
Il fonctionne, mais depuis que je dois interpoler les points qui sont un domaine réduit j'ai modifié le code pour essayer de interpoler points qui sont dans la gamme 0
-1
:
rng shuffle
t = 0:0.1:1;
x = randn(size(t))';
ts = linspace(-1,2,600);
[Ts,T] = ndgrid(ts,t);
y = sinc(Ts - T)*x;
plot(t,x,'o',ts,y)
xlabel Time, ylabel Signal
legend('Sampled','Interpolated','Location','SouthWest')
legend boxoff
et il ne fonctionne pas correctement, je reçois ce de ce qui précède:
Pourriez-vous s'il vous plaît me dire ce que je fais mal, ou si sinc
ne fonctionne que dans des domaines « grands »?
Quel algorithme d'interpolation que vous voulez mettre en œuvre/utiliser? A quoi ressemble le résultat dans le "grand" domaine? – Svaberg