实验一 连续时间信号及其MATLAB实现

浙江理工大学信号与系统实验

实验一 连续时间信号及其MATLAB实现

一、实验目的

1.掌握MATLAB语言的基本操作,学习基本的编程功能;

2.掌握MATLAB产生常用连续时间信号的编程方法;

3.学会用MATLAB进行信号基本运算的方法,了解信号运算对信号所起的作用。

二、实验仪器

装有MATLAB软件的微型计算机1台

三、实验原理

  1. 连续信号MATLAB实现原理

从严格意义上讲,MATLAB数值计算的方法并不能处理连续时间信号。然而,可用连续信号在等时间间隔点的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能够被MATLAB处理,并且能较好地近似表示连续信号。

MATLAB提供了大量生成基本信号的函数。比如常用的指数信号、正余弦信号等都是MATLAB的内部函数。为了表示连续时间信号,需定义某一时间或自变量的范围和取样时间间隔,然后调用该函数计算这些点的函数值,最后画出其波形图。

  1. 典型信号的MATLAB表示

(1) 实指数信号:f(t)=Keat,式中K,a为实数。在MATLAB中可以利用exp()函数实现,其语句格式为:y=Kexp(at)。

img,调用格式为 ft=Aexp(at) 程序是

t=0:0.01:10;    %定义时间点

ft=A*exp(a*t);   %计算这些点的函数值

plot(t,ft);      %画图命令,用直线段连接函数值表示曲线

grid on;      %在图上画方格

(2) 正弦信号:f(t)=Ksin(ωt+φ)或f(t)=Kcos(ωt+φ),其中K为振幅,ω是角频率;φ是初相位。在MATLAB中可以利用sin()或cos()函数实现,其语句格式为Ksin(ωt+phi),Kcos(ωt+phi)。

img,调用格式为 ft=Asin(wt+phi)

```A=1; w=2*pi; phi=pi/6;

```

t=0:0.01:8;           %定义时间点

ft=A*sin(w*t+phi);       %计算这些点的函数值

plot(t,ft);            %画图命令

grid on;            %在图上画方格 

(3) 单位冲击/阶跃信号:

单位冲击/阶跃信号在MATLAB中可以用比较赋值语句产生。MATLAB表达式“y = ( t==0 )”的含义就是t = 0时y =1,而当t ≠ 0时y =0。 MATLAB表达式“y = ( t >=0)”的含义就是t ≥ 0时y =1,而当t < 0时y =0。

以下为单位阶跃信号示例:

t=-1:0.01:5;

y=(t>=0);

plot(t,y);  

grid on;

axis([-1,5,-0.5,1.5]);

在MATLAB中,将dirac函数定义为冲击信号函数,heaviside函数定义为阶跃信号函数。

(4) 复指数信号:f(t)=Kest =Ke(σ+jω)t= Keσtcos(ωt)+j Keσtsin(ωt),其中,s=σ+jω是复变量;σ、ω为实数。在MATLAB中可以利用exp()函数表示复指数信号,MATLAB中默认变量i为虚部单位,求取实部用real()函数,求取虚部用imag()函数,求取模用abs()函数,求取相角用angle()函数。

f(t)=Ke****(σ+jω)t,调用格式为f=Kexp((σ+jω)*t)

t=0:0.01:3;

K=3; sigma=-1; omega=10;

f=K*exp((sigma +j*omega)*t); 

subplot(2,2,1),plot(t,real(f)),title('实部')

subplot(2,2,3),plot(t,imag(f)),title('虚部') 

subplot(2,2,2),plot(t,abs(f)),title('模')

subplot(2,2,4),plot(t,angle(f)),title('相角') 

(5)矩形脉冲信号:在MATLAB中可用rectpuls()函数产生,其语句格式为y=rectpuls(t,width),该函数用于产生一个幅值为1、宽度为width、相对于t=0 点左右对称的矩形波信号。该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2 的范围。width的默认值为1。

t=-2:0.01:2;
width=1;
ft=2*rectpuls(t,width);
plot(t,ft)
grid on;

周期性矩形波信号或方波在MATLAB中可用square函数产生,其语句格式为square(t,DUTY)。该函数用于产生一个周期为2π、幅值为1的周期性方波信号,其中,DUTY参数用来表示信号的占空比为DUTY%,即在一个周期内脉冲宽度(正值部分)与脉冲周期的比值,占空比默认值为0.5。

例如频率为30Hz 的周期性方波信号的MATLAB源程序如下:

t=-0.0625:0.0001:0.0625;

y=square(2*pi*30*t,75);%DUTY=75(percent)

plot(t,y);axis([-0.0625 0.0625 -1.5 1.5]);

grid on;

(6)三角波脉冲信号:在MATLAB中,可以用tripuls()函数生成,其语句格式为ft=tripuls(t,width,skew),该函数用于产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。width的默认值是1,skew的取值范围是-1~+1之间。一般最大幅度1出现在t=(width/2)*skew的横坐标位置,默认时skew=0,此时产生对称三角波。

t=-3:0.01:3;
ft=tripuls(t,4,0.5);
plot(t,ft); 
grid on;
axis([-3,3,-0.5,1.5]);

周期性三角波信号在MATLAB中用sawtooth函数来表示,其调用形式为:

Y=sawtooth(t,WIDTH )

用以产生一个周期为2p、最大幅度为1、最小幅度为-1的周期性方波信号(锯齿波)信号,其中的WIDTH 参数表示最大幅度出现的位置:在一个周期内,信号从t =0 到WIDTH2p时,函数值是从-1到1 线性增加的,而从WIDTH**2p到2p时函数值又是从1到-1 线性递减的;在其他周期内依次类推。

例如周期性三角波信号的MATLAB源程序如下:

t=-5*pi:pi/10:5*pi;
x=sawtooth(t,0.5);
plot(t,x);axis([-16 16 -1.5 1.5]);
grid on;    
  1. 信号的基本运算

信号基本运算是乘法、加法、尺度、反转、平移、微分、积分,实现方法有数值法和符号法。

(1)信号的乘法与加法

例如:已知f1(t)=sin(wt) , f2(t)=sin(8wt) , w=2π , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图

w=2*pi;

t=0:0.01:3;

f1=sin(w*t);

f2=sin(8*w*t);

subplot(211)

plot(t,f1+1,':',t,f1-1,':',t,f1+f2)

grid on,title('f1(t)+f2(t))')

subplot(212)

plot(t,f1,':',t,-f1,':',t,f1.*f2)

grid on,title('f1(t)*f2(t)') 

(2)信号自变量的变换

如前所述,MATLAB可以有两种方法来表示连续信号。用这两种方法均可实现连续信号的时域变换,但用符号运算的方法则较为简便。

*①**移位*

对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量ttt0替换:

y=subs(f,t,t-t0); 
ezplot(y)

*②**反折*

连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t换为-t。实现如下:

y=subs(f,t,-t); 
ezplot(y)

*③**尺度变换*

连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f(t)中的自变量t换为at,当a>1时,信号f(at)以原点为基准,沿横轴压缩到原来的1/a;当0<a<1时,就展宽至原来的1/a倍。实现如下:

y=subs(f,t,a*t); 
ezplot(y)

*④**倒相*

连续信号的倒相是指将信号f(t)以横轴为对称轴对折得到-f(t)。实现如下:

y=-f; 
ezplot(y)

对于以上的命令,可在画图命令之后加入坐标轴的调整的命令(即加入axis( )命令),以使画出的图形更清晰、直观。

例如:以f(t)为三角信号为例,求f(2t) , f(2-2t)

t=-3:0.001:3;

ft=tripuls(t,4,0.5); 

subplot(3,1,1);                                      

plot(t,ft); grid on;

title ('f(t)');

ft1= tripuls(2*t,4,0.5);

subplot(3,1,2);                                      

plot(t,ft1); grid on;

title ('f(2t)');

ft2= tripuls(2-2*t,4,0.5);

subplot(3,1,3);                                      

plot(t,ft2); grid on;

title ('f(2-2t)');

(3)微分与积分

符号算法也可实现信号的运算,以信号的微积分运算为例说明符号算法应用。

微分的调用格式为 diff(function,’variable’,n)

积分的调用格式为 int(function,’variable’,a,b)

式中function表示要微分或积分的函数,variable表示运算变量,n表示求导阶数,默认值是求一阶导数,a是积分下限,b是积分上限,a、b默认是求不定积分。在符号运算中,若要调用它必须用sym定义后,才能实现。

例如:求一阶导数的例题,已知imgimg

clear

  syms a x y1 y2    %定义符号变量a, x ,y1, y2

  y1=sin(a*x^2);    %符号函数y1

  y2=x*sin(x)*log(x);  %符号函数y2

  dy1=diff(y1, 'x')    %无分号消隐直接显示结果

  dy2=diff(y2)     %无分号消隐直接显示结果

例如:求积分的例题,imgimg

  clear

syms a x y3 y4

y3=x^5-a*x^2+sqrt(x)/2;

y4=(x*exp(x))/(1+x)^2;

iy3=int(y3,'x')

iy4=int(y4,0,1)

四、实验内容

1. 验证实验原理中程序

(1) 实指数信号:

 A=1; a=-0.4;

t=0:0.01:10;    %定义时间点

ft=A*exp(a*t);   %计算这些点的函数值

plot(t,ft);      %画图命令,用直线段连接函数值表示曲线

grid on;      %在图上画方格

img

(2) 正弦信号:

A=1; w=2*pi; phi=pi/6;

t=0:0.01:8;           %定义时间点

ft=A*sin(w*t+phi);       %计算这些点的函数值

plot(t,ft);            %画图命令

grid on;            %在图上画方格

img

(3) 单位冲击/阶跃信号:

单位阶跃信号:

t=-1:0.01:5;

y=(t>=0);

plot(t,y);  

grid on;

axis([-1,5,-0.5,1.5]);

img

(4) 复指数信号:

t=0:0.01:3;

K=3; sigma=-1; omega=10;

f=K*exp((sigma +j*omega)*t); 

subplot(2,2,1),plot(t,real(f)),title('实部')

subplot(2,2,3),plot(t,imag(f)),title('虚部') 

subplot(2,2,2),plot(t,abs(f)),title('模')

subplot(2,2,4),plot(t,angle(f)),title('相角')

img

(5)矩形脉冲信号:

t=-2:0.01:2;

width=1;

ft=2*rectpuls(t,width);

plot(t,ft)

grid on;

img

周期性方波信号:

t=-0.0625:0.0001:0.0625;

y=square(2*pi*30*t,75);%DUTY=75(percent)

plot(t,y);axis([-0.0625 0.0625 -1.5 1.5]);

grid on;

img

(6)三角波脉冲信号:

t=-3:0.01:3;

ft=tripuls(t,4,0.5);

plot(t,ft); 

grid on;

axis([-3,3,-0.5,1.5]);

img

周期性三角波信号:

t=-5*pi:pi/10:5*pi;

x=sawtooth(t,0.5);

plot(t,x);axis([-16 16 -1.5 1.5]);

grid on;

img

(7)信号的乘法与加法

已知f1(t)=sin(wt) , f2(t)=sin(8wt) , w=2π , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图

w=2*pi;

t=0:0.01:3;

f1=sin(w*t);

f2=sin(8*w*t);

subplot(211)

plot(t,f1+1,':',t,f1-1,':',t,f1+f2)

grid on,title('f1(t)+f2(t))')

subplot(212)

plot(t,f1,':',t,-f1,':',t,f1.*f2)

grid on,title('f1(t)*f2(t)')

img

(8)信号自变量的变换

f(t)为三角信号,f(2t) , f(2-2t)

t=-3:0.001:3;

ft=tripuls(t,4,0.5); 

subplot(3,1,1);                                      

plot(t,ft); grid on;

title ('f(t)');

ft1= tripuls(2*t,4,0.5);

subplot(3,1,2);                                      

plot(t,ft1); grid on;

title ('f(2t)');

ft2= tripuls(2-2*t,4,0.5);

subplot(3,1,3);                                      

plot(t,ft2); grid on;

title ('f(2-2t)');

img

(9)微分与积分

已知imgimg

clear

  syms a x y1 y2    %定义符号变量a, x ,y1, y2

  y1=sin(a*x^2);    %符号函数y1

  y2=x*sin(x)*log(x);  %符号函数y2

  dy1=diff(y1, 'x')    %无分号消隐直接显示结果

  dy2=diff(y2)     %无分号消隐直接显示结果

img

求积分imgimg

  clear

syms a x y3 y4

y3=x^5-a*x^2+sqrt(x)/2;

y4=(x*exp(x))/(1+x)^2;

iy3=int(y3,'x')

iy4=int(y4,0,1)

img

2. 画出信号波形

(1)img

img

(2)img

img

(3)产生幅度为1、周期为1、占空比为0.5的周期矩形信号

img

3. 已知img,作出imgimgimg的微分、img的积分、imgimg的波形。

定义函数:

function y=myfun1(x)

y=x.*(x>0 & x<1)+(-1).*(x>1 & x<2)+0.*(x<=0 & x >=2);

end

 

t=-4:0.1:4;

f=myfun1(t); 

 

f1=f+f;

f2=f.*f;

 

f3=diff (f);

for u=1:length (t);

​    f4(u)=quad('f',0,t(u));

end

f5=myfun1(3-4*t);f6=myfun1(1-0.667*t);

 

subplot (211);plot (t,f1,'Linewidth',2);title('f (t)+f (t)');

ylabel('y(t)');xlabel('t');xlim([-0.1,4]);ylim([-2,3]);

grid on;

subplot (212);plot (t,f2,'Linewidth',2);title('f (t).*f (t)');

ylabel('y(t)');xlabel('t');xlim([-0.1,4]);ylim([-2,3]);

grid on;

img

figure;

subplot(211);plot(t(1:80),f3,'Linewidth',2);

title('f (t)的积分'); ylabel('y(t)');xlabel('t');

 grid on;

subplot(212);plot(t,f4,'Linewidth',2);

title ('f (x)的微分'); ylabel('y(t)');xlabel('t');grid on;

img

figure;

subplot (2,1,1);plot (t,f5,'Linewidth',2);title ('f (3-4t)');

ylabel('y(t)');xlabel('t');

grid on;

subplot (2,1,2);plot (t,f6,'Linewidth',2);title('f (1-1.5t)');

ylabel('y(t)');xlabel('t');

grid on;

img

五、 实验结论

  1. 再次熟悉了matlab的函数和基本操作,能流利的使用matlab进行函数的仿真模拟和运算。

  2. 熟悉了信号与系统仿真实验的大致内容和报告要求。

  3. 对信号与系统中的阶跃信号、冲激信号的图像和性质有了进一步了解。

后续还有好多实验还没来得及上传,可以点击这个链接自行下载:https://wwd.lanzouq.com/ipnqk05t5v3e

);

title (‘f (x)的微分’); ylabel(‘y(t)’);xlabel(‘t’);grid on;

[外链图片转存中...(img-zNn7oVUR-1654166607278)] 
```matlab
figure;

subplot (2,1,1);plot (t,f5,'Linewidth',2);title ('f (3-4t)');

ylabel('y(t)');xlabel('t');

grid on;

subplot (2,1,2);plot (t,f6,'Linewidth',2);title('f (1-1.5t)');

ylabel('y(t)');xlabel('t');

grid on;

[外链图片转存中…(img-qeIgkYYp-1654166607279)]

五、 实验结论

  1. 再次熟悉了matlab的函数和基本操作,能流利的使用matlab进行函数的仿真模拟和运算。

  2. 熟悉了信号与系统仿真实验的大致内容和报告要求。

  3. 对信号与系统中的阶跃信号、冲激信号的图像和性质有了进一步了解。

后续还有好多实验还没来得及上传,可以点击这个链接自行下载:https://wwd.lanzouq.com/ipnqk05t5v3e

  • 26
    点赞
  • 224
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
北邮2020信号系统课程仿真实验matlab 包含: 1.word版实验报告 2.18个matlab代码 题目要求: 习题1 典型信号的表示和运算: 1.产生离散衰减正弦序列x(n)=0.8 n sin⁡(π/4 n) ,0<n<10, 并画出其波形图。 2.用MATLAB生成信号 sinc(at-t_0), a和t_0都是实数,-4<t<10,画波形图。观察并分析a和t_0的变化对波形的影响。 3.某频率为f的正弦波可表示为x_a (t)=cos⁡(2πft),对其进行等间隔抽样,得到的离散样值序列可表示为x(n)= x_a (t)(t=nT),其中T称为抽样间隔,代表相邻样值间的时间间隔,f_s=1/T表示抽样频率,即单位时间内抽取样值的个数。抽样频率取f_s=40" Hz" ,信号频率f分别取5Hz, 10Hz, 20Hz和30Hz。请在同一张图中同时画出连续信号x_a (t) t和序列x(n) nT的波形图,并观察和对比分析样值序列的变化。可能用到的函数为plot, stem, hold on。 4.用MATLAB产生音阶信号"1 2 3 4 5 6 7 " "1" ,并播放,抽样频率可设为8000 Hz。 5.利用MATLAB产生信号x_1 (t)=cos⁡t和x_1 (t)=cos⁡20t,请画出信号x_1 (t)+x_2 (t)和信号x_1 (t) x_2 (t)的波形图。 习题2 线性时不变系统的时域分析: 计算下列信号 和 的卷积和。 1. x(n)=h(n)=u(n)-u(n-4); 2. x(n)=u(n)-u(n-4), h(n)=0.8 n [u(n)-u(n-10)] 习题3 绘制典型信号及其频谱图: (1)绘制单边指数信号及其频谱图的MATLAB程序如下: close all; E=1;a=1; t=0:0.01:4; w=-30:0.01:30; ... 请更改参数,调试此程序,绘制单边指数信号的波形图和频谱图。观察参数a对信号波形及其频谱的影响。 注:题目中阴影部分是幅频特性的对数表示形式,单位是(dB),请查阅相关资料,了解这种表示方法的意义及其典型数值对应的线性增益大小。 (2)绘制矩形脉冲信号、升余弦脉冲信号和三角脉冲信号的波形图和频谱图,观察并对比各信号的频带宽度和旁瓣的大小。 习题4 连续系统的零极点分布与频响特性的关系: 请利用MATLAB软件绘制下列因果系统的零极点图和频率响应特性曲线,并判断系统具有什么类型的滤波特性。 (1) H_1 (s)=2/(s+2); (2) H_2 (s)=s/(s+2); (3) H_3 (s)=1/(s+1)(s+2) ; (4) H_4 (s)=s/(s+1)(s+2) ; (5) H_5 (s)=s 2/(s+1)(s+2) ; (6) H_6 (s)=s/(s 2+2s+10); (7) H_7 (s)=(s-1)(s-2)/(s+1)(s+2) .

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值