数fliplr()对信号作时域反褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t和n的。因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。
2.3.3 信号的时域尺度变换
信号x(t)的时域尺度变换在数学描述为
y(t) = x(at), 1.5
其中a为任意常数。根据a的不同取值,这种时域尺度变换对信号x(t)具有非常不同的影响。 当a = 1时,y(t) = x(t);
当a = -1时,y(t) = x(-t),即y(t)可以通过将x(t)反褶运算而得到; 当a > 1时,y(t) = x(at),y(t)是将x(t)在时间轴上的压缩而得到; 当0 < a < 1时,y(t) = x(at),y(t)是将x(t)在时间轴上的扩展而得到;
当 -1 < a < 0时,y(t) = x(at),y(t)是将x(t)在时间轴上的扩展同时翻转而得到; 当 a < -1时,y(t) = x(at),y(t)是将x(t)在时间轴上的压缩同时翻转而得到;
由此可见,信号的时域尺度变换,除了对信号进行时域压缩或扩展外,还可能包括对信号的时域反褶运算。实际上,MATLAB完成式1.5的运算,并不需要特殊的处理,按照数学上的常规方法即能完成。
2.3.4周期信号
在《信号与系统》课程中,周期信号是一类非常重要的信号。给定一个信号x(t)或x[n],如果满足
x(t) = x(t+kT) 1.6 x[n] = x[n+kN] 1.7
则该信号叫做周期信号。其中,k为任意整数,T和N为常数,通常称为信号的基本周期或最小周期。
周期信号可以看作是一个时限的非周期信号经过周期延拓之后形成的。在数字信号处理中,周期延拓这一信号处理方法非常重要。
下面的程序段,就是将一个非周期信号x1(t) = e-2t[u(t)-u(t-2)]经过周期延拓之后而得到一个周期信号:
clear, close all; t = -4:0.001:4; T = 2; x = 0; for k = -2:2;
x = x+exp(-2*(t-k*T)).*(u(t-k*T)-u(t-(k+1)*T)); end
仔细阅读该程序,可以发现其算法就是:
x(t)?k????x(t?kT) 1.8
1?由于k无法计算到无穷,而是以有限值加以替代,反映到有限宽度图形窗口中得到的效果完全符合要求。
三、实验内容及步骤
实验前,必须首先阅读本实验原理,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。
实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。
Q1-1:修改程序Program1_1,将dt改为0.2,再执行该程序,保存图形,看看所得图形
的效果如何?
dt = 0.01时的信号波形 dt = 0.2时的信号波形
这两幅图形有什么区别,哪一幅图形看起来与实际信号波形更像? 答:
Q1-2:修改程序Program1_1,并以Q1_2为文件名存盘,产生实指数信号x(t)=e-2t。 要求
在图形中加上网格线,并使用函数axis()控制图形的时间范围在0~2秒之间。然后执行该程序,保存所的图形。
修改Program1_1后得到的程序Q1_2如下:
% Program1_2
% This program is used to generate a sinusoidal signal and draw its plot clear, % Clear all variables
close all, % Close all figure windows
dt = 0.2; % Specify the step of time variable t = -2:dt:2; % Specify the interval of time x = exp(-2*t); % Generate the signal
plot(t,x) % Open a figure window and draw the plot of x(t) axis([0 2 0 1]) grid on;
title('Sinusoidal signal x(t)')
xlabel('Time t (sec)')
信号x(t)=e-0.5t的波形图
Q1-3:修改程序
Program1_1,并以Q1_3为文件名存盘,使之能够仿真从键盘上任意输
入的一个连续时间信号,并利用该程序仿真信号x(t)=e-2t。
修改Program1_1后得到的程序Q1_3如下: 信号x(t)=e-2t的波形图
% Program1_3 clc
clear, % Clear all variables
close all, % Close all figure windows
dt = 0.01; % Specify the step of time variable t = -2:dt:2; % Specify the interval of time
x = input('please input a signal,I will draw its plot for you Singnal x='); %Input the signal plot(t,x) % Open a figure window and draw the plot of x(t) xlabel('Time t (sec)') grid on
%x=exp(-2*t)
此处粘贴图形
Q1-4:将实验原理中所给的单位冲激信号和单位阶跃信号的函数文件在MATLAB文件编
辑器中编写好,并分别以以文件名delta和u存入work文件夹中以便于使用。
抄写函数文件delta如下: 抄写函数文件u如下:
?t?????(t)dt?1t?0 u[n]???(t)?0,
?1,?0,n?0 n?0Q1-5:修改程序Program1_4,并以Q1_5为文件名存盘,利用axis()函数,将图形窗口的
横坐标范围改为-2≤n≤5,纵坐标范围改为-1.5≤ x ≤1.5。
修改Program1_4后得到的程序Q1_5如下: 信号的波形图
此处粘贴图形 >> % Program1_5
% This program is used to generate a discrete-time sinusoidal signal % and draw its plot
clear, % Clear all variables
close all, % Close all figure windows n = -5:5; % Specify the interval of time
x = [zeros(1,4), 0.1, 1.1, -1.2, 0, 1.3, zeros(1,2)]; % Generate the sequence
stem (n,x,'filled','r') % Open a figure window and draw the plot of x[n] axis([-2 5 -1.5 1.5]) grid on,
title ('A discrete-time sequence x[n]') xlabel ('Time index n')
Q1-6:仿照前面的示例程序的编写方法,编写一个MATLAB程序,以Q6为文件名存盘,
使之能够在同一个图形窗口中的两个子图中分别绘制信号x[n]=0.5|n| 和x(t)=cos(2πt)[u(t)-u(t-3)]。要求选择的时间窗能够表现出信号的主要部分(或特征)。
编写的程序Q1_6如下:
信号x[n]=0.5|n| 的波形图和信号x(t)=cos(2πt)[u(t)-u(t-3)]的波形图
四、实验报告要求
1、按要求完整书写你所编写的全部MATLAB程序
2、详细记录实验过程中的有关信号波形图(存于自带的U盘中),图形要有明确的标题。全部的MATLAB图形应该用打印机打印,然后贴在本实验报告中的相应位置,禁止复印件。
3、实事求是地回答相关问题,严禁抄袭。
本实验完成时间:
年 月
日