上篇博文采用了零阶保持(ZOH)的方式进行了重构:【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)

这篇博文我们使用一阶保持(FOH)内插来重建信号,采用的案例依然是上篇博文中的案例:

模拟信号:

【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(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时,用零阶保持的重建信号表示如下:

【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(FOH)内插_采样率_02

第三幅图就是线性内插(FOH)恢复信号。

 

当采样率Fs为1000样本/s时,使用零阶保持恢复信号示意图如下:

【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(FOH)内插_采样频率_03

第三幅图就是线性内插(FOH)恢复信号。

使用plot函数给出样本之间的线性内插(FOH)。

FOH重建看起来是一种好的重建,一般若采样频率比奈奎斯特频率高很多,那么FOH内插给出一个可以接受的重建。