信号处理实验指导书1111040564684365

发布时间 : 星期四 文章信号处理实验指导书1111040564684365更新完毕开始阅读

实验一 信号的描述、运算及波形绘制

一、[实验目的]

1、熟悉并掌握常用连续/离散时间信号sin,cos的数值/向量/符号表示法; 2、熟悉并掌握用subs,syms完成信号的时移、折叠、尺度变换等操作。 3、熟悉并掌握plot,ezplot等来绘制信号波形的方法。 二、[实验原理]

1、信号描述(连续时间信号) (1) 数值表示法 (离散时间信号) 实例1.1:数值表示法表示离散信号x(n) = 2nu(n) 的前六个非零值和连续信号y(t) = sin(2πt) (0≤t≤1)。 参考程序:

n = [1:6]; %% 对于离散信号x(n)定义下标1≤n≤6 的样值。

x = 2*n %% 输出显示x =2 4 6 8 10 12

t = [0:0.1:1]; y = sin(2*pi*t); %% 对于连续信号y(t) ,我们定义其采样间隔为0.1

最终结果显示:

y =Columns 1 through 9

0 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 Columns 10 through 11 -0.5878 -0.0000 (2) 向量表示法

实例1.2:f(t)?sin(t),可采用下列两个向量表示:

p?1t??10:p:10 f?sin(t)若要绘出该连续时间信号的波形,可加入下列语句。 plot(t,f) grid

title(‘f(t)=sin(t)’) xlable(‘t’)

axis(-10,10,-1.1,1.1)

(3) 符号运算表示法

实例1.3:f(t)?sin(t?/4),采用符号表示式表述为

syms t 或 f=sym(‘sin(pi/4*t)’) f=’sin(pi/4*t)’ f= sin(pi/4*t) ezplot(f,[-16,16])

注意:画图命令的不同,画出离散时间序列的波形用stem;画出连续时间信号的波形用plot,如用符号运算表示法表示画图命令是ezplot。 2、信号运算与变换(连续时间信号) (1) 信号的相加、相乘、导数、积分

例:对于f(t),若f(t)?f1(t)?f2(t),则采用下列语句实现: syms t f1=sin(t) f2=t f=f1+f2 ezplot(f)

例:对于f(t),若f(t)?f1(t)?f2(t),则采用下列语句实现: f=f1*f2

例:对于f(t),若f(t)?df(t)/dt,则采用下列语句实现: syms t f=sin(t) df=diff(f) ezplot(df)

例:对于f(t),若f(t)??f(?)d?,则采用下列语句实现:

??ts=int(f) ezplot(s)

(2) 信号时移、折叠、尺度变换

1) 时移f(t)?f(t?t0),可用下列语句实现:

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

2) 折叠f(t)?f(?t),可用下列语句实现:

y=subs(f,t,-t)

3) 尺度变换f(t)?f(at),可用下列语句实现:

y=subs(f,t,at)

注:sub指令的功能语法

subs能够在符号表达式和符号矩阵中进行置换操作,下面我们就介绍一下它的调用语法规则:

R=subs(S) %将表达式S中的所有变量用调用的函数或MATLAB workspace中获得的值进行置换,将置换后的表达式赋给R;

R=subs(S,new) %用new置换表达式S中的自变量后在赋给R;

R=subs(S,old,new) %用new置换表达式中的old,然后将置换完的表达式赋给R。 对于英语学的比较好的人员,可以通过help subs搜索matlab自带的帮助信息进一步学习。下面是用help subs搜索到的subs帮助信息

实例1.4:已知x(t) = sin(2πt)u(t),y(t) = e-tu(t)。试计算t∈[0,2]区间的z1(t) = 2x(t) ,

z2(t) = x(t-1) ,z3(t) = x(2t) ,z4(t) = x(t) + y(t) ,z5(t) = x(t)y(t) 。 解:

定义采样间隔0.05和x(t),y(t),可直接计算得到z1(t),z4(t)和z5(t),程序如下:

t = [0:0.05:2]; x = sin(2*pi*t); y = exp(-t); z1 = 2*x; z4 = x + y; z5 = x.*y;

为了求x(t)延时得到的z2(t),定义一个全零的临时变量temp,然后把x(t)拼接到t < 1的temp后面,即得到延时1的结果,程序如下:

temp = zeros(size(x)); z2 = [temp(t<1),x(t<=1)];

为了有足够多的数据供抽取,重新定义一段较长的x(t),然后从中隔一个采一个,即可得到x(2t),并且数据长度也满足要求,程序如下:?

tL = [0:0.05:4]; xL = sin(2*pi*tL);

z3 = xL(1:2:length(xL)); %错

正确解:

tL = [0:0.05:4];

tL1=1/2*tL; plot(tL1,xL,'r'); hold on; plot(tL,xL)

注意:

1. 例1.4中exp和sin一样,是Matlab提供的数学运算库函数;size 函数返回一个变量的大小;zeros函数生成一个指定大小的全零矩阵; 2. z2 = [temp(t<1),x(t<=1)] 较难理解,其执行的过程如下:

首先执行的是比较运算t<1,它的计算结果也是一个矢量,其中元素根据比较结果分别是1(真)或0(假)。再把这个比较结果作为矢量temp 的下标,即temp(t<1),返回t 中对应为真的这些下标的元素,即时间长度为1秒(从0秒到1秒)这么多的零值(用来作为延时1 秒的填充物)。接下来再看x(t<=1) ,它的道理类似,即取了x(t)前1秒的数据,然后补在1秒的零值的后面,从而得到2秒的数据,满足了题意要求。

(3) Matlab 知识—比较和逻辑运算符

Matlab 提供的比较和逻辑运算符如表1.2 所示,其中all 和any 是两个有

特色的逻辑函数,请同学们课下充分练习。

3、绘制信号波形

实例1.5:对比绘制实例1.4中各种信号的波形。 参考程序及注释:

figure; % 生成新图框

hold on; % 进入绘图保留模式 plot(t,x); % 以默认格式绘制t-x plot(t,z1,`r'); % 用红色实线绘制t-z1

plot(t,z2,`k-o'); % 用黑色实线带圆圈标记绘制t-z2 plot(t,z3,`g--'); % 用绿色虚线绘制t-z3 xlabel(`t(seconds)'); % 填写X轴说明 ylabel(`signals'); % 填写Y轴说明

legend(`x',`z1',`z2',`z3'); % 填写图例 figure; % 生成新图框

subplot(1,2,1); % 生成并列放置2 个子图中的左边一个

plot(t,z4,`k',t,x,`b:',t,y,`r:'); % 用黑实线绘制z4 ,蓝和红点线绘制x 和y title(`z4(t)'); % 填写标题

subplot(1,2,2); % 生成并列放置2 个子图中的右边一个 plot(t,z5,`k',t,x,`b:',t,y,`r:'); title(`z4(t)');

运行结果显示:

图1.1 例1.4绘第一幅图

图1.1 例1.4绘第二幅图

联系合同范文客服:xxxxx#qq.com(#替换为@)