您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页实验一 MATLAB基础及基本信号产生

实验一 MATLAB基础及基本信号产生

来源:爱go旅游网
实验一 基于MATLAB的信号表示与运算

一、 实训目的

1.掌握用Matlab软件产生基本信号(连续/离散的正弦、方波、锯齿波、Sinc函数)的方法

2.应用Matlab软件实现信号的加、减、乘、除运算 3.应用Matlab软件实现信号的时移、反折、尺度变换 二、 实训仪器与设备 电脑、MATLAB软件 三、 实训内容

1.产生连续信号波形的方法

(1)利用 Matlab 软件的 funtool 符号计算方式——图式化函数计算器 在 Matlab 环境下输入指令 funtool,产生三个视窗:

figure No.1:可轮流激活,显示 figure No.3 的计算结果 figure No.2:可轮流激活,显示 figure No.3 的计算结果 figure No.3:函数运算器。

其中 figure No.3 函数运算器的功能:f,g可输入函数表达式。x是自变量,在缺省时是在[-2pi,2pi]范围。 自由参数是 a。分别输入完毕,按下面四排的任一运算操作键,则可在 figure No.1或 figure No.2 中看到产生的波形。

figure No.3 函数运算器可实现的数算:

Df 求 f(x)对于 x 的导数 If 求 f(x)对于 x 的积分 Simp 使 f(x)的表达式尽可能简化 Num 取 f(x)的分子表达式 Den

取 f(x)的分母表达式 1/f 求 f(x)的倒数

finv 求 f(x)的反函数

函数 f(x)和自由参数 a 的运算:f+a,f-a,f*a,f/a,f^a, x+a , x*a 函数 f(x)和 g(x)函数间的运算:f+g,f-g,f*g,f/g,f=g,g=f (2)利用 Matlab 软件的信号处理工具箱(Signal Processing Toolbox)中的函数 产生常见信号的函数如表 2.1-1 所示。

表 2.1-1

函数名 sin cos randn square sawtooth tripuls sinc log exp 功能 正弦信号预弦信号 随机数 周期方波 周期锯齿波 等腰三角形 Sinc 函数 自然对数函数 指数函数 常见调用格式 sin(x) cos(x) randn (n) square(x) sawtooth(x) tripuls (x) sinc(x) log(x) exp(x) 说明 返回 x 的正弦值 返回 x 的余弦值 返回 n×n 维的随机数 在时间 x 内产生周期为 2π 的方波 在时间 x 内产生周期为 2π 的锯齿 x=0 为中点的等腰三角形 波产生以返回 sin(pi*x)/(pi*x) 的值 返回 log(x)的值 返回ex的值

a、产生正弦波 例如:

t=(0:0.001:50);

y=sin(2*pi*50*t); plot(t(1:50),y(1:50)) b、产生叠加随机噪声的正弦波 例如:

t=(0:0.001:50); y=sin(2*pi*50*t); s=y+randn(size(t)); plot(t(1:50),s(1:50)) 2.连续信号的运算 (1)相加

连续信号的相加,是指两信号的对应时刻值相加,即f(t)= f1(t)+f2(t)。 下面用MATLAB的符号运算命令来表示两连续信号的相加,然后用ezplot命令绘制出其结果波形图。其中f1,f2是两个用符号表达式表示的连续信号,s为相加得到的和信号的符号表达式。 s=symadd(f1,f2)或s=f1+f2 ezplot(s)

(2)相乘

连续信号的相乘,是指两信号的对应时刻值相乘,即 f(t)= f1(t)*f2(t)。 与相加运算类似,我们用下面的MATLAB命令来实现连续信号的相乘及其结果的可视化,其中f1,f2为两个用符号表达式表示的信号,w为相乘得到的积信号的符号表达式。

w=symmul(f1,f2) 或w=f1*f2 ezplot(w)

(3)移位

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

(4)反折

连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f (t)中的自变量t换为- t。与连续信号的平移类似,我们用下面的命令实现连续信号的反折及其结果的可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量: y=subs(f,t,-t) ezplot(y)

(5)尺度变换

连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f (t)中的自变量t换为at ,当a >1时,信号f (at)以原点为基准,沿横轴压缩到原来的1/ a;当0 < a <1时,信号f (at)将沿横轴展宽至原来的1/ a倍。我们用下面的命令来实现连续信号的尺度变换及其结果的可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量: y=subs(f,t,a*t) ezplot(y)

(6)倒相

连续信号的倒相,是指将信号f (t)以横轴为对称轴对折得到- f (t),可用下面的命令实现连续信号的倒相及其结果的可视化, 其中f是用符号表达式表示的连续时间信号。 y=-f

ezplot(y)

注意:两个信号相加,其和信号在任意时刻的信号值等于两信号在该时刻的信号值之和。两个信号相乘,其积信号在任意时刻的信号值等于两信号在该时刻的信号值之积。 在Matlab中,矩阵和数组的加减法用符合“+”、“-”实现。

矩阵的乘法用“*”实现,要求相乘的矩阵要有相邻公共维。数组的乘除法是指两同维数组间对应元素之间的乘除法,运算符 为“.*”、“./”或“.\\”。

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

下面举例说明如何用MATLAB来实现连续信号的时域运算、变换及其结果的可视化。

例如:

t=0:0.01:2; f1=exp(-3*t);

f2=0.2*sin(4*pi*t); f3=f1+f2; f4=f1.*f2;

subplot(2,2,1);plot(t,f1);title('f1(t)');

subplot(2,2,2);plot(t,f2);title('f2(t)');

subplot(2,2,3);plot(t,f3);title('f1+f2');

subplot(2,2,4);plot(t,f4);title('f1*f2');

用matlab的符号函数实现信号的时移、反折、尺度变换:由f(t)到f(-at+b)(a>0)步骤:

调用函数:subs(S,OLD,NEW) 表示用NEW中的符合变量替换表达式S中的OLD的符合变量。

例:已知f(t)=sin(t)/t,试通过反褶、移位、尺度变换由f(t)的波形得到f(-2t+3)的波形。

syms t;

f=sym('sin(t)/t'); %定义符号函数f(t)=sin(t)/t f1=subs(f,t,t+3); %对f进行移位

f2=subs(f1,t,2*t); %对f1进行尺度变换 f3=subs(f2,t,-t); %对f2进行反褶

subplot(2,2,1);ezplot(f,[-8,8]);grid on; %ezplot是符号函数绘图命令

subplot(2,2,2);ezplot(f1,[-8,8]);grid on;

subplot(2,2,3);ezplot(f2,[-8,8]);grid on; subplot(2,2,4);ezplot(f3,[-8,8]);grid on;

注:也可用一条指令:subs(f,t,-2*t+3)实现f(t)到f(-2t+3)

3.离散信号的产生与运算 (1)单位抽样序列

1,nn0 (nn0)0,nn0先定义delta函数,并保存。 function[x,n]=delta(n0,n1,n2) n=[n1:1:n2]; x=[(n-n0)==0]; end

然后执行下面程序。(以δ(n-3)为例) [x,n]=delta(5,-1,10) stem(n,x);

(2)单位阶跃序列

1,nn0 (nn0)0,nn0先定义step_seq函数,并保存。 function[x,n]=step_seq(n0,n1,n2) n=[n1:n2];

x=[(n-n0)>=0];

然后执行下面程序。以((n3)为例) [x,n]=step_seq(3,-1,10); stem(n,x)

(3)矩形序列

(nn0)1,nn00,nn0

先定义aaa函数,并保存。 function[x,n]=aaa(N,n1,n2) n=[n1:n2];

x=[(N=0)];

然后执行下面程序。(以R3为例) [x,n]=aaa(3,-1,10); stem(n,x)

(4)单位斜坡序列

先定义ramp函数,并保存。 function[x,n]=ramp(n1,n2) n=[n1:n2]; x=n;

然后执行下面程序。 [x,n]=ramp(0,10); stem(n,x)

(5)正弦序列

例:x(n)5sin(0.5n/4) n=-pi:0.1:pi;

x=5*sin(0.5*pi*n+pi/4); stem(n,x)

(6)指数序列

例:x(n)=5exp(-0.5 n) n=-1:0.1:1;

x=5* exp(-0.5 *n); stem(n,x)

10.90.80.70.60.50.40.30.20.10-20246810(7)任意序列

例:x=[1,5,-4,2,5,-1,5]; x=[1,5,-4,2,5,-1,5]; n=1:length(x); stem(n,x)

4、离散信号的运算

对于离散序列来说,序列相加、相乘是将两序列对应时间序号的值逐项相加或相乘,平移、反折、及倒相变换与连续信号的定义完全相同,这里就不再累述。但需要注意,与连续信号不同的是,在MATLAB中,离散序列的时域运算和变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须具有相同的维数。

下面是实现离散序列相加、相乘的实用子程序及实例。 例:二序列相加、乘 x1=[1,5,-4,2,5,-1,5]; x2=[1,2,3,4,5,6,7]; n=1:length(x);

subplot(2,2,1);stem(n,x1); subplot(2,2,2);stem(n,x2); subplot(2,2,3);stem(n,x1+x2); subplot(2,2,4);stem(n,x1.*x2);

四、小结

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务