MATLAB实现对Sa(t)采样利用采样定理恢复原信号

MATLAB实现采样,恢复

对Sa(t)函数均匀采样

%信号Sa(t)作为被采样信号,信号带宽B=1,采样频率Ws=2B
%此频率下的采样为Nyquist采样,对采样即恢复过程用MATLAB进行仿真
B=1;    %信号带宽
wc=B;   %滤波器截止频率
Ts=pi/B;    %采样间隔
ws=2*pi/Ts; %采样角频率
N=100;  %滤波器时域采样点数
n=-N:N; 
nTs=n.*Ts;  %采样数据的采样时间
fs=sinc(nTs/pi);    %函数的采样点
Dt=0.005;   %恢复信号的采样间隔
t=-15:Dt:15;    %恢复信号的范围
fa=fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
%信号重构
error=abs(fa-sinc(t/pi));%求重构信号与原信号的归一化误差
%画图
figure(1);
subplot(3,1,1);
plot(t,sinc(t/pi),'.');
title("抽样信号sa(t)");
subplot(3,1,2);
plot(t,fa);
title("重构信号");
subplot(3,1,3);
plot(t,error);
title("重构误差");

仿真结果图
MATLAB实现对Sa(t)采样利用采样定理恢复原信号_第1张图片
代码来源:
https://www.bilibili.com/video/BV16E411E7PA?p=118&vd_source=a5290fe970a5f52ac6dd1f3a63990e4e

一些知识:
B:带宽,频带宽度 B=wc,低通滤波器最高通过频率
奈奎斯特采样定理得知:采样频率(ws)需要大于等于两倍的信号频率,所以该代码设置为ws=2wc。
理想低通滤波器的h(t)=(wc/pi) sa(wct)
f(t)通过冲激序列抽样后得到
MATLAB实现对Sa(t)采样利用采样定理恢复原信号_第2张图片
所以恢复信号
在这里插入图片描述

注意: (ones(length(nTs),1)*t-nTs’*ones(1,length(t)) 由于t
和nTs两个行向量的长度不相等,所以无法之接相减运算,所以这里添加了全为1的行向量和列向量,分别相乘后得到行列数相等的矩阵再进行相减,才可以完成运算。

你可能感兴趣的:(MATLAB,matlab,开发语言)