信号采样与sinc插值恢复[MATLAB]
根据采样定理,若想无失真地从采样信号重建信号,需要满足:
-
信号为频带有限信号。
-
f s ≥ 2 f m f_s \ge 2f_m fs≥2fm。
令插值因子为sinc函数
h
(
m
)
=
s
i
n
c
(
m
)
=
s
i
n
(
π
m
)
π
m
h(m) = sinc(m) = \frac{sin(\pi m)}{\pi m}
h(m)=sinc(m)=πmsin(πm)
则插值信号为
g
(
m
)
=
∑
i
g
d
(
i
)
s
i
n
c
(
m
−
i
)
g(m) = \sum_i g_d(i)sinc(m-i)
g(m)=i∑gd(i)sinc(m−i)
下面通过MATLAB进行仿真,代码如下:
%参数设定
T = 2;
f1 = 5;
f2 = 10;
fs = 40;
%可得参数
N = T * fs;
t = linspace(-T/2, T/2, 100*N);
f_ori = 0.5 * cos(2 * pi * f1 * t) - sin(2 * pi * f2 * t) + 1;
figure(1);
plot(t, f_ori);xlim([-T/10, T/10]);title('原始信号');
%采样
t2 = linspace(-T/2, T/2, N);
f_sam = 0.5 * cos(2 * pi * f1 * t2) - sin(2 * pi * f2 * t2) + 1;
figure(2);
stem(t2, f_sam);xlim([-T/10, T/10]);title('采样信号');
%恢复
y = [];
for i = 1 : length(t)
x = t(i);
h = sinc((x - t2).*fs);
g = dot(f_sam, h);
y = [y,g];
end
figure(3);
plot(t, y);xlim([-T/10, T/10]);title('恢复信号');
结果如下: