实验任务
双频信号的采样和插值重建:对双频信号进行采样(符合奈奎斯特低通采样定理),绘制波形和频谱;编制sinc函数插值函数,对采样进行恢复,绘制波形。
实验原理
matlab代码
clear all;
close all;
%%parameter settings
%采样相关参数设置
N = 100; %采样点数
Fs = 20; %采样频率 20Hz
Ts = 1/Fs; %采样间隔
DS=1/(Ts*N); %频率分辨率
T = N*Ts; %采样时长
n = 0:N-1;
ts = n*Ts;%采样时间序列
f_s = -Fs/2:DS:Fs/2-DS;%采样频率序列
%原始信号相关参数设置
f1 = 1; %信号1频率1Hz
f2 = 2; %信号2频率2Hz
Tn = 0.01;%原始信号时间间隔
Fn = 1/Tn;
Nn = N*Ts/Tn;
Dn = Fn/Nn;
f_n = -Fn/2:Dn:Fn/2-Dn;
tn = 0:Tn:T-Tn;%原始时间序列
x = sin(2*pi*f1*tn)+sin(2*pi*f2*tn);%原始信号
x1 = sin(2*pi*f1*ts)+sin(2*pi*f2*ts); %采样信号
figure(1);
mag=abs(fft(x))/Fn;
subplot(211);
plot(tn,x);
title(['原始信号波形']);
subplot(212);
plot(f_n,fftshift(mag));
title(['原始信号频谱']);
figure(2);
mag1=abs(fft(x1))/Fs;
subplot(211);
stem(ts,x1);
title(['采样信号波形']);
subplot(212);
plot(f_s,fftshift(mag1));
title(['采样信号频谱']);
%%sinc函数内插恢复
step = Ts/Tn;
y=zeros(1,length(tn));%y表示内插恢复后的信号
t = -T+Tn:Tn:T-Tn;
mid = ceil(length(t)/2);
h = sinc(t/Ts);
figure(3);
plot(t,h);
axis([-T,T,0,2]);
title("sinc函数波形");
for index = 1:1:length(ts)t_shift = t(mid-(index-1)*step:end-(index-1)*step);%相当于t-kTsy = y + x1(index)*sinc(t_shift/Ts);
end
figure(4);
subplot(2,1,1);
plot(tn,y);
title("sinc函数内插恢复后的信号波形");
subplot(2,1,2);
magy = abs(fft(y))/Fn;
plot(f_n,fftshift(magy));
title("sinc函数内插恢复后的信号频谱");
运行结果
f1 = 1; %信号1频率1Hzf2 = 2; %信号2频率2Hz