资源描述
实验一 连续时间信号
§1.1 表示信号的基本MATLAB函数
目的
学习连续时间信号和离散时间信号在MATLAB中的表示。
相关知识
1.离散时间信号的表示
通常,信号用一个行向量或一个列向量表示。在MATLAB中全部向量都从1开始编号,如y(1)是向量y的第1个元素。如果这些编号与你的应用不能对应,可以创建另外一标号向量与信号编号保持一致。
例如,为了表示离散时间信号
首先利用冒号运算符对的非零样本定义标号向量,然后再定义向量x,表示在这些时间编号每一点的信号值
>> n=[-3:3];
>> x=2*n;
如果要在一个更宽的范围内检查信号,就需拓宽n和x。例如如要在画出这个信号,可以拓宽标号向量n,然后将这些附加的元素加到向量x上,如
>> n=[-5:5];
>> x=[0 0 x 0 0];
>> stem(n,x);
如果要大大扩展信号的范围,可利用zeros函数。
例如如果想要包括的范围,而向量x已扩展到,这时可键入
>> n=[-100:100];
>> x=[zeros(1,95) x zeros(1,95)];
假设要定义,,可编程如下
>> nx1=[0:10];
>> x1=[1 zeros(1,10)];
>> nx2=[-5:5];
>> x2=[zeros(1,3) 1 zeros(1,7)];
>> stem(nx1,x1);
>> stem(nx2,x2);
2.连续信号的表示
①用Symbolic Math Toolbox
②用向量表示连续时间信号,这些向量包含了该信号在时间上依次隔开的样本;可用具有任意步长宗量的分号运算符和利用linspace函数。例如想创建一覆盖区间,步长为0.1秒的向量,既可以用 t=[-5:0.1:5],或者用t=linspace(-5,5,101)。
§1.2 连续时间复指数信号
例如:考虑连续时间正弦信号,利用执行
>> x=sym('sin(2*pi*t/T)');
就创建了MATLAB的符号表达式。x的变量是单一的字符串‘t’和‘T’。函数ezplot用于对一个仅限于一个变量的符号表达式画图,所以必须将的基波周期设置到某一具体的值。若想设置T=5,可用subs
>> x5=subs(x,5,'T');
于是,x5就是的一个符号表达式。利用执行
>> ezplot(x5,[0,10])
可画出x5两个周期的波形,如下图
基本题
1.对下面信号创建符号表达式
这两个信号应分别创建,然后用symmul组合起来。对于T=4,8和16,利用ezplot画出内的信号。什么是的基波周期?
可编程如下:
y=sym('sin(2*pi*t/T)');
z=sym('cos(2*pi*t/T)');
x=y*z;
x4=subs(x,4,'T');
x8=subs(x,8,'T');
x16=subs(x,16,'T');
subplot(2,2,1)
ezplot(x4,[0,32]);
subplot(2,2,2)
ezplot(x8,[0,32]);
subplot(2,2,3)
ezplot(x16,[0,32])
图如下:
上图分别为T=4,T=8,T=16时的波形,由于x(t)即为一个正弦信号,所以所得的图为正弦波形,T增大,f变小,故图形变疏。它们的基波周期为T/2.
中等题
2.对下面信号创建一个符号表达式
对于,利用ezplot确定,为最后跨过0.1的时间,将定义为该信号的消失的时间。利用ezplot对每一个值确定在该信号消失之前,有多少个完整的余弦周期出现,周期数目是否正比于品质因素?
程序如下:
y=sym('exp(-1*a*t)');
z=sym('cos(2*pi*t)');
x=y*z;
x1=subs(x,1/2,'a');
x2=subs(x,1/4,'a');
x3=subs(x,1/8,'a');
subplot(2,2,1)
ezplot(x1,[0,20])
subplot(2,2,2)
ezplot(x2,[0,15])
subplot(2,2,3)
ezplot(x3,[0,25])
波形图如下:
分析:上图分别为a=1/2,a=1/4,a=1/8时的波形图。这是指数衰减信号,随着衰减指数a的不同,衰减的速度不同,a=1/2时,消失时间约为 4,大概有4个完整的波形;a=1/4时,消失时间约为9,大约有9个完整的波形;a=1/8时,消失时间约为18,大概有18个完整的波形。可以看出周期数目大致正比于品质因素?
深入题
3.将信号的符号表达式存入x中。记住:在符号表达式中是用‘i’而不是'j'。函数ezplot不能直接画出。因为是一个复数信号,实部和虚部分量必须要提取出来,然后分别画出它们。
程序如下:
y=sym('exp(i*2*pi*t/16)');
z=sym('exp(i*2*pi*t/8)');
x=y+z;
subplot(2,1,1)
ezplot(real(x),[0,25])
subplot(2,1,2)
ezplot(imag(x),[0,25])
图形如下:实部:
虚部:
4.分别画出在区间上的幅值和相位。思考为什么相位图是不连续的?
Fo=0,而F(nw)=1/2(an+jbn),其中:
|F(1)|=|F(2)|=()/2
幅度:
相位:
因为此信号已经转换为具直流分量,正弦分量,余弦分量的的傅里叶级数形式,具基波形式,且其基频为f1=1/t,其相位为nw1的函数,周期信号只会出现在0,w1,2w1….等上。因此相位不连续。
§1.3连续时间信号时间变量的变换
目的
本练习要用MATLAB的Symbolic Math Toolbox考查连续时间信号自变量各种变换的效果。
相关知识
习题中用到的单位阶跃函数Heaviside仅存在于Symbolic Math Toolbox中,而ezplot仅仅能画既存在于Symbolic Math Toolbox,又存在于总MATLAB工具箱中的函数,所以需在你的工作目录下创建称之为Heaviside的M文件,其内容如下:
function f=Heaviside(t)
%HEAVISIDE Unit Step function
%f=Heaviside(t) returns a vector f the same size as
%the input vector,where each element of f is 1 if the
%corresponding element of t is greater than zero.
f=(t>0);
中等题
1.利用Heaviside定义由给出的的符号表达式,并利用ezplot画出这一符号表达式。
程序如下:
function f=Heaviside(t)
f=t.*((t>0)-(t>2))
f=Heaviside(t);
plot(t,f);
分析:这是一个一个谐波信号和一个矩形脉冲相乘的结果,故在0-2时有信号,信号如图所示。
2.以下表达式定义一组由表示的连续时间信号,利用Symbolic Math Toolbox函数subs和已经定义的符号表达式,以MATLAB调用g1~g5的方式定义符号表达式表示下列每一个信号,并利用ezplot画出每个信号,叙述下列每一个信号是怎样与关联的。
程序如下:
function f=Heaviside(t)
f=t.*((t>0)-(t>2))
f=Heaviside(t);
subplot(2,3,1);
plot(-t,f);
f=Heaviside(t);
subplot(2,3,2);
plot(t-1,f);
f=Heaviside(t);
subplot(2,3,3);
plot(t+3,f);
f=Heaviside(t);
subplot(2,3,4);
plot(1-t,f);
f=Heaviside(t);
subplot(2,3,5);
plot((1-t)/2,f);
分析:g(t1)由f(t)反折得到,g(t2)由f(t)左移1得到,g(t3)由f(t)右移3得到,g(t4)由f(t)左移1再反折得到,g(t5)由f(t)左移1,反折再压缩得到。
§1.4连续时间信号的能量和功率
目的
学习求一个连续时间信号的能量或平均功率。
相关知识
对于一个连续时间信号的有用度量通常为信号的能量或平均功率。
对于一个连续时间信号,其在区间上,能量的定义为
式中,是的复共轭。因此,对一个基波周期为T的周期信号而言,就包含了该信号在一个周期内的信号能量。信号的全部能量定义为,如果这个极限存在。
对于一个连续时间信号,其在区间上,平均功率的定义为
整个信号的平均功率定义为,如果这个极限存在。
基本题
1.对下面每一个信号创建符号表达式:
这些表达式将‘t’作为一个变量。
2.利用ezplot画出每个信号的两个周期,如果这个信号是复变信号,需分别画出实部和虚部分量。图中的坐标轴应适当标注。
深入题
程序如下:
x1 = sym('cos(pi*t/5)');
x2 = sym('sin(pi*t/5)');
x3 = sym('exp(i*2*pi*t/3)+exp(i*pi*t)');
subplot(2,2,1)
ezplot(x1,[0,20])
subplot(2,2,2)
ezplot(x2,[0,20])
subplot(2,2,3)
ezplot(real(x3),[0,12])
subplot(2,2,4)
ezplot(imag(x3),[0,12])
分析:x1(t)、x2(t)为正弦信号,所以波形为正行波。X3(t)为两个复指数信号的和,故信号分为实部和虚部。
3.定义E1,E2和E3分别为信号,和所包含的的符号表达式。应该以‘a’和‘-a’作为积分上下限的符号表达式。利用int,同时为得到符号表达式x的复共轭,可以键入subs(x,‘-i’,‘i’)。
程序如下:
X1=sym('cos(pi*t/5)');
e1=int(x1*conj(x1));
X2=sym('sin(pi*t/5)');
e2=int(x2*conj(x2));
X3=sym('exp(i*2*pi*t/3)')+sym('exp(i*pi*t)');
y=subs(x3,'-i','i');
e3=int(x3*y);
结果:
e1=int(cos((pi*t)/5)*cos((pi*conj(t))/5), t);
e2=int(sin((pi*t)/5)*sin((pi*conj(t))/5), t)
e3=2*t + (3*exp((2*pi*i*t)/3) - 3)/(pi*i*exp((pi*i*t)/3))
4.利用每个信号的符号表达式求该信号在单一周期内的能量。答案应是数字而不是表达式。对每一符号表达式,利用ezplot画出作为的函数关系图。能量随区间长度的增加如何变化?的期望值是什么?
x1=sym('cos(pi*t/5)');
e1=int(x1*conj(x1))
E1=int(x1*conj(x1),-5,5)
x2=sym('sin(pi*t/5)');
e2=int(x2*conj(x2))
E2=int(x2*conj(x2),-5,5)
x3=sym('exp(i*2*pi*t/3)')+sym('exp(i*pi*t)');
y=subs(x3,'-i','i');
e3=int(x3*y)
E3=int(x3*y,-3,3)
==>
E1=E2=5,
E3 =(12*sinh(pi*i))/(pi*i) + 12,涉及超越正弦函数,取值12.
其中:
e1=int(cos((pi*t)/5)*cos((pi*conj(t))/5), t);
e2=int(sin((pi*t)/5)*sin((pi*conj(t))/5), t)
e3=2*t + (3*exp((2*pi*i*t)/3) - 3)/(pi*i*exp((pi*i*t)/3))
对于其关系图:
随着a的增大,能量不断增大,但在小范围内有类似于正弦的波动,所以的期望应为无穷大
5.定义P1,P2和P3分别为信号,和所包含的的符号表达式。创建每一个符号表达式,并用ezplot画出在上的。注意,对于,无定义。随的增加,其特性如何?从图中估计出每个信号。对每个信号,与比较的结果如何?明确说明根据和的定义,怎样本该就能预计到这一结果?
程序如下:
x1=sym('cos(pi*t/5)');
y1=int(x1*conj(x1));
syms a
e11=subs(y1,a,'t')-subs(y1,-a,'t')
subplot(2,2,1)
ezplot(e11/2/a,[0.1,60])
x2=sym('sin(pi*t/5)');
y1=int(x2*conj(x2));
syms a
e22=subs(y1,a,'t')-subs(y1,-a,'t')
subplot(2,2,2)
ezplot(e22/2/a,[0.1,60])
x3=sym('exp(i*2*pi*t/3)')+sym('exp(i*pi*t)');
y=subs(x3,'-i','i');
e3=int(x3*y);
syms a
e22=subs(e3,a,'t')-subs(e3,-a,'t')
subplot(2,2,3)
ezplot(e22/2/a,[0.1,60]);
分析:x1(t)和x2(t)随着a的增加,功率的变化趋近于一个常量0.5、X3(t)
功率的变化趋近于一个常量2,且在常量处有小小的正弦波动。因而可以推测的值同样有小波动但是趋近于0.5,这个值和前面的的值相等。由图可以看到,当能量的积分区间增加时,能量值跟着增加,最后趋于一个常量。
6.为什么会预期到的和的收敛到同一值?说明这一结果如何本来就能预期到。
从5题可以得出:
E1= a + (5*sin((2*pi*a)/5))/(2*pi)---------------------------------------->
E2= a - (5*sin((2*pi*a)/5))/(2*pi) ---------------------------------------->
E3= 4*a + (12*sinh((pi*a*i)/3))/(pi*i) ------------------------------ ---->
而:
( E1)/2/a= (a/2 + (5*sin((2*pi*a)/5))/(4*pi))/a=P1
( E2)/2/a= (a/2 - (5*sin((2*pi*a)/5))/(4*pi))/a=P2
( E3)/2/a= (2*a + (6*sinh((pi*a*i)/3))/(pi*i))/a=P3
而通过取极限可以算出,当a趋近于无穷大时,和的Pa都趋近于1/2=0.5,而的则趋近于2.
展开阅读全文