信号与系统MATLAB实验:连续信号的采样与恢复

一、实验内容

(1)修改示例中的门信号宽度、采样周期等参数,重新运行程序,观察得到的采样信号时域和频域特性,以及重构信号与误差信号的变化。

示例1:选取门信号f(t)= g2(t)为被采样信号。利用MATLAB实现对信号f(t)的采样,显示原信号与采样信号的时域和频域波形。

% 显示原信号及其Fourier变换示例
R=0.02;%采样周期
t=-4:R:4;
f=rectpuls(t,4)
w1=2*pi*10; % 显示[-20*pi 20*pi]范围内的频谱
N=1000; % 计算出 2*1000+1 个频率点的值
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk)*R; % 利用数值计算连续信号的 Fourier 变换
F=abs(F); % 计算频谱的幅度
wk=[-fliplr(wk),wk(2:1001)];
F=[fliplr(F),F(2:1001)]; % 计算对应负频率的频谱
figure;
subplot(2,1,1); plot(t,f);xlabel('t'); ylabel('f(t)');title('f(t)=u(t+1)-u(t-1)');
subplot(2,1,2); plot(wk,F);xlabel('w'); ylabel('F(jw)');
title('f(t)的 Fourier 变换');

%显示采样信号及其Fourier变换示例
R=0.24; % 可视为过采样
t=-4:R:4;
f=rectpuls(t,4);
w1=2*pi*10;
N=1000;
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk); % 利用数值计算采样信号的 Fourier 变换
F=abs(F);
wk=[-fliplr(wk),wk(2:1001)]; % 将正频率扩展到对称的负频率
F=[fliplr(F),F(2:1001)]; %将正频率的频谱扩展到对称的负频率的频谱
figure;
subplot(2,1,1)
stem(t/R,f); % 采样信号的离散时间显示
xlabel('n'); ylabel('f(n)');
title('f(n)');
subplot(2,1,2)
plot(wk,F); % 显示采样信号的连续的幅度谱
xlabel('w'); ylabel('F(jw)');
title('f(n)的 Fourier 变换');

示例2:利用MATLAB实现对示例1中采样信号的重构,并显示重构信号的波形。

%采样信号的重构及其波形显示示例程序
Ts=0.24; % 采样周期,可修改
t=-3:Ts:3;
f=rectpuls(t,2); % 给定的采样信号
ws=2*pi/Ts;
wc=ws/2;
Dt=0.01;
t1=-3:Dt:3; % 定义信号重构对应的时刻,可修改
fa=Ts*wc/pi*(f*sinc(wc/pi*(ones(length(t),1)*t1-t'*ones(1,length(t1)))));
%信号重构
figure
plot(t1,fa);
xlabel('t'); ylabel('fa(t)');
title('f(t)的重构信号');
t=-3:0.01:3;
err=fa-rectpuls(t,2);
figure; plot(t,err);
sum(abs(err).^2)/length(err); % 计算重构信号的均方误差

示例3:通过频率滤波的方法,利用MATLAB实现对示例1中采样信号的重构,并显示重构信号的波形。

%采用频率滤波的方法实现对采样信号的重构
Ts=0.24; % 采样周期
t=-4:Ts:4;
f=rectpuls(t,2);
w1=2*pi*10;
N=1000;
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk); % 利用数值计算连续信号的 Fourier 变换
wk=[-fliplr(wk),wk(2:1001)];
F=[fliplr(F),F(2:1001)];
Tw=w1/N; % 频率采样间隔
w=-2*pi*10:Tw:2*pi*10;
H=Ts*rectpuls(w,2.*pi/Ts); % 理想低通滤波器频率特性
%下面两行为可修改程序
%[b,a]=butter(M, Wc,'s'); % 确定系统函数的系数矢量,M, Wc 为设定滤波器的阶数和 3dB 截止频率
%H=Ts*freqs(b,a,w);
Fa=F.*H; % 采样信号通过滤波器后的频谱
Dt=0.01;
t1=-3:Dt:3;
fa=Tw/(2*pi)*(Fa*exp(j*wk'*t1));
% 利用数值计算连续信号的 Fourier 逆变换
figure
subplot(2,1,1) ; plot(t1,fa);xlabel('t');ylabel('fa(t)');title('f(t)的重构信号');
err=fa-rectpuls(t1,2);
subplot(2,1,2);plot(t1,err); xlabel('t');ylabel('err(t)');title('f(t)的重构误差信号');
sum(abs(err).^2)/length(err)

(2)将原始信号分别修改为抽样函数Sa(t)、正弦信号sin(20*pi*t)+cos(40*pi*t)、指数信号e-2tu(t)时,在不同采样频率的条件下,观察对应采样信号的时域和频域特性,以及重构信号与误差信号的变化。(选1-2个信号完成即可)

抽样函数Sa(t)
% 显示原信号及其 Fourier 变换示例
R=0.01;%采样周期
t=-3*pi:pi/100:3*pi;
f=sinc(t/pi);
w1=2*pi*10; % 显示[-20*pi 20*pi]范围内的频谱
N=1000; % 计算出 2*1000+1 个频率点的值
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk)*R; % 利用数值计算连续信号的 Fourier 变换
F=abs(F); % 计算频谱的幅度
wk=[-fliplr(wk),wk(2:1001)];
F=[fliplr(F),F(2:1001)]; % 计算对应负频率的频谱
figure;
subplot(2,1,1); plot(t,f);xlabel('t'); ylabel('f(t)');title('f(t)=u(t+1)-u(t-1)');
subplot(2,1,2); plot(wk,F);xlabel('w'); ylabel('F(jw)');
title('f(t)的 Fourier 变换');

%显示采样信号及其 Fourier 变换示例
R=0.25; % 可视为过采样
t=-3*pi:pi/100:3*pi;
f=sinc(t/pi);
w1=2*pi*10;
N=1000;
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk); % 利用数值计算采样信号的 Fourier 变换
F=abs(F);
wk=[-fliplr(wk),wk(2:1001)]; % 将正频率扩展到对称的负频率
F=[fliplr(F),F(2:1001)]; %将正频率的频谱扩展到对称的负频率的频谱
figure;
subplot(2,1,1)
stem(t/R,f); % 采样信号的离散时间显示
xlabel('n'); ylabel('f(n)');
title('f(n)');
subplot(2,1,2)
plot(wk,F); % 显示采样信号的连续的幅度谱
xlabel('w'); ylabel('F(jw)');
title('f(n)的 Fourier 变换');

%采样信号的重构及其波形显示示例程序
Ts=0.24; % 采样周期,可修改
t=-3*pi:pi/100:3*pi;
f=sinc(t/pi); % 给定的采样信号
ws=2*pi/Ts;
wc=ws/2;
Dt=0.01;
t1=-3:Dt:3; % 定义信号重构对应的时刻,可修改
fa=Ts*wc/pi*(f*sinc(wc/pi*(ones(length(t),1)*t1-t'*ones(1,length(t1)))));
%信号重构
figure
plot(t1,fa);
xlabel('t'); ylabel('fa(t)');
title('f(t)的重构信号');
t=-3:0.01:3;
err=fa-rectpuls(t,2);
figure; plot(t,err);
sum(abs(err).^2)/length(err); % 计算重构信号的均方误差

正弦信号sin(20*pi*t)+cos(40*pi*t)
% 显示原信号及其 Fourier 变换示例
R=0.01;%采样周期
A=1; w2=20*pi;w3=40*pi;
t=0:0.01:8;
f=A*sin(w2*t)+A*cos(w3*t);
w1=2*pi*10; % 显示[-20*pi 20*pi]范围内的频谱
N=1000; % 计算出 2*1000+1 个频率点的值
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk)*R; % 利用数值计算连续信号的 Fourier 变换
F=abs(F); % 计算频谱的幅度
wk=[-fliplr(wk),wk(2:1001)];
F=[fliplr(F),F(2:1001)]; % 计算对应负频率的频谱
figure;
subplot(2,1,1); plot(t,f);xlabel('t'); ylabel('f(t)');title('f(t)=u(t+1)-u(t-1)');
subplot(2,1,2); plot(wk,F);xlabel('w'); ylabel('F(jw)');
title('f(t)的 Fourier 变换');

%显示采样信号及其 Fourier 变换示例
R=0.23; % 可视为过采样
A=1; w2=20*pi;w3=40*pi;
t=0:0.01:8;
f=A*sin(w2*t)+A*cos(w3*t);
w1=2*pi*10;
N=1000;
k=0:N;
wk=k*w1/N;
F=f*exp(-j*t'*wk); % 利用数值计算采样信号的 Fourier 变换
F=abs(F);
wk=[-fliplr(wk),wk(2:1001)]; % 将正频率扩展到对称的负频率
F=[fliplr(F),F(2:1001)]; %将正频率的频谱扩展到对称的负频率的频谱
figure;
subplot(2,1,1)
stem(t/R,f); % 采样信号的离散时间显示
xlabel('n'); ylabel('f(n)');
title('f(n)');
subplot(2,1,2)
plot(wk,F); % 显示采样信号的连续的幅度谱
xlabel('w'); ylabel('F(jw)');
title('f(n)的 Fourier 变换');

%采样信号的重构及其波形显示示例程序
Ts=0.24; % 采样周期,可修改
A=1; w2=20*pi;w3=40*pi;
t=0:0.01:8;
f=A*sin(w2*t)+A*cos(w3*t); % 给定的采样信号
ws=2*pi/Ts;
wc=ws/2;
Dt=0.01;
t1=-3:Dt:3; % 定义信号重构对应的时刻,可修改
fa=Ts*wc/pi*(f*sinc(wc/pi*(ones(length(t),1)*t1-t'*ones(1,length(t1)))));
%信号重构
figure
plot(t1,fa);
xlabel('t'); ylabel('fa(t)');
title('f(t)的重构信号');
t=-3:0.01:3;
err=fa-rectpuls(t,2);
figure; plot(t,err);
sum(abs(err).^2)/length(err); % 计算重构信号的均方误差

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x陌北x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值