【发布时间】:2017-03-21 05:02:30
【问题描述】:
对于大学作业,我必须插入一些我之前从波中采样的点。只要我用interp1 函数对它们进行插值,它就可以工作。
我的老师希望我们使用 sinc 函数对其进行插值,所以我用谷歌搜索了它,mathworks 文档说我应该这样做:
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
它有效,但由于我必须插入缩小域中的点,我修改了代码以尝试插入范围从 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
它只是不能正常工作,我从上面得到这个:
您能否告诉我我做错了什么,或者sinc 是否仅适用于“大”域?
【问题讨论】:
-
你想实现/使用什么插值算法? “大”域中的结果是什么样的?
标签: matlab math signal-processing interpolation coordinate-transformation