上篇博文采用了零阶保持(ZOH)的方式进行了重构:【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)
这篇博文我们使用一阶保持(FOH)内插来重建信号,采用的案例依然是上篇博文中的案例:
模拟信号:
对该信号使用两种不同的采样频率采样。
a. 在 fs = 5000 对信号进行采样
b. 在 fs = 1000 对信号采样
这里直接给出MATLAB脚本:
clc
clear
close all
% Analog signal
Dt = 0.00005;
t = - 0.005:Dt:0.005;
xa = exp(-1000 * abs(t));
subplot(3,1,1);
plot(1000*t,xa);
title('Analog signal');
xlabel('t in msec');
ylabel('xa');
%Fs = 5000,Ts = 0.0002
% Discrete-time signal
Ts = 0.0002;
Fs = 1/Ts;
n = -25:25;
nTs = n*Ts;
x = exp(-1000*abs(nTs));
subplot(3,1,2)
plot(1000*t,xa);
hold on
stem(n*Ts*1000,x);
title('Discrete-time signal');
hold off
% Analog signal reconstruction
subplot(3,1,3);
plot(nTs*1000,x);
title('Analog signal reconstruction');
xlabel('t in msec');
ylabel('xa after reconstruction');
hold on
stem(n*Ts*1000,x)
hold off
% Fs = 1000, Ts = 1ms
% Discrete-time signal
Ts = 0.001;
Fs = 1/Ts;
n = -5:5;
nTs = n*Ts;
x = exp(-1000*abs(nTs));
figure
subplot(3,1,1);
plot(1000*t,xa);
title('Analog signal');
xlabel('t in msec');
ylabel('xa');
subplot(3,1,2)
plot(1000*t,xa);
hold on
stem(n*Ts*1000,x);
title('Discrete-time signal');
hold off
% Analog signal reconstruction
subplot(3,1,3);
plot(nTs*1000,x);
title('Analog signal reconstruction');
xlabel('t in msec');
ylabel('xa after reconstruction');
hold on
stem(n*Ts*1000,x)
hold off
当采样率Fs为5000 样本/s时,用零阶保持的重建信号表示如下:
第三幅图就是线性内插(FOH)恢复信号。
当采样率Fs为1000样本/s时,使用零阶保持恢复信号示意图如下:
第三幅图就是线性内插(FOH)恢复信号。
使用plot函数给出样本之间的线性内插(FOH)。
FOH重建看起来是一种好的重建,一般若采样频率比奈奎斯特频率高很多,那么FOH内插给出一个可以接受的重建。