控制工程MATLAB实验报告材料
发布时间:2020-01-17 13:41:45
发布时间:2020-01-17 13:41:45
浙江科技学院
设计题目: MATLAB控制机电系统实分析
专 业: 机 械 设 计 制 造及 其 自 动 化
班 级: 机 制 122
学生姓名: 王朝旭
指导老师: 高 俊
2014年05月30日
实验一 MATLAB语言基本命令
1 实验目的
1. 掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用;
2. 掌握MATLAB的命令运行方式和M文件运行方式;
3. 掌握矩阵在MATLAB中的运用。
2 实验器材
计算机WinXP、Matlab7.0软件
3 实验内容
(1). 输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2;3 3 3],
在命令窗口中执行下列表达式,掌握其含义:
A(2, 3) A(:,2) A(3,:) A(:,1:2:3)
A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B
A^2 A.^2 B/A B./A
(2).输入 C=1:2:20,则 C(i)表示什么?其中 i=1,2,3,…,10;
(3).查找已创建变量的信息,删除无用的变量;
(4). 试用 help命令理解下面程序各指令的含义:
clear
t =0:0.001:2*pi;
subplot(2,2,1);
polar(t, 1+cos(t))
subplot(2,2,2);
plot(cos(t).^3,sin(t).^3)
subplot(2,2,3);
polar(t,abs(sin(t).*cos(t)))
subplot(2,2,4);
polar(t,(cos(2*t)).^0.5)
4 实验步骤:
打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。
5 实验报告内容
(1)>> A=[7 1 5;2 5 6;3 1 5]
A =
7 1 5
2 5 6
3 1 5
>> B=[1 1 1; 2 2 2;3 3 3]
B =
1 1 1
2 2 2
3 3 3
>> A(2, 3) “ 取矩阵A中第二行第三列的元素”
ans =
6
>> A(:,2) “ 取矩阵A中第二列的元素”
ans =
1
5
1
>> A(3,:) “ 取矩阵A中第三行的元素”
ans =
3 1 5
>> A(:,1:2:3) “使矩阵的第一列到第二列,第二例到第三列,构成新的2*3的矩阵”
ans =
7 5
2 6
3 5
>> A(:,3).*B(:,2) “取矩阵A的三列和B的第二列,对应元素一次相乘”
ans =
5
12
15
>> A(:,3)*B(2,:) “取矩阵A的三列和B的第二行,对应元素进行叉乘”
ans =
10 10 10
12 12 12
10 10 10
>> A*B “矩阵进行叉乘”
ans =
24 24 24
30 30 30
20 20 20
>> A.*B “两矩阵对应元素相乘”
ans =
7 1 5
4 10 12
9 3 15
>> A^2 “矩阵A叉乘上矩阵A”
ans =
66 17 66
42 33 70
38 13 46
>> A.^2 “举证A中的元素翻倍”
ans =
49 1 25
4 25 36
9 1 25
>> B/A “矩阵B除以矩阵A”
ans =
0.1842 0.2105 -0.2368
0.3684 0.4211 -0.4737
0.5526 0.6316 -0.7105
>> B./A “两矩阵对应元素相除”
ans =
0.1429 1.0000 0.2000
1.0000 0.4000 0.3333
1.0000 3.0000 0.6000
(2)>> C=1:2:20
C =
1 3 5 7 9 11 13 15 17 19
C(i)表示奇数 2*i-1
(3)查找已创建变量的信息,删除无用的变量
clear “清除”
t =0:0.001:2*pi; “定义时间向量”
subplot(2,2,1); “定义多块图画的绘图位置”
polar(t, 1+cos(t)) “绘制函数图像”
subplot(2,2,2);
plot(cos(t).^3,sin(t).^3)
subplot(2,2,3);
polar(t,abs(sin(t).*cos(t)))
subplot(2,2,4);
(4)polar(t,(cos(2*t)).^0.5)
(1)了解Matlab控制系统工具箱中常用函数.
(2)掌握模型转换方法以及奈氏图、伯德图的绘制。
(3)掌握系统脉冲、阶跃等响应的仿真方法
计算机Win7、Matlab7.0软件
(1)利用residue函数求取传递函数的部分分式展开式
(2)利用tf函数构建系统传递函数
(3)利用impulse、step、lsim等函数仿真系统的单位脉冲、阶跃、速度响应。
(4)画出单位负反馈的开环传递函数的在频率0.01-100rad/s间的伯德图
(5)画出系统的乃奎斯特图
(1) 写出传递函数
a. 列些分子num、分母den的系数
b. 利用residue(num,den) 求出零极点和余项
实验运行结果:
r =[ 1.0000 2.5000 -3.0000 0.5000 ] p =[-4.000 -3.0000 -2.000 -1.0000] k=1
(2)对于系统
A.首先利用conv函数展开分母,获得各阶系数,此时num=[14 21];
den=conv(conv(conv([1 0 0], [3 1]),conv([1 2],[1 2])), [5 0 3 8])
b.再利用tf函数构建传递函数
运行结果:
G(S)=
(3)a. 用tf(num,den)函数构建高阶系统传递函数
b.构建时间向量t
c 用函数impulse及step仿真系统的单位脉冲响应、单位阶跃响应
d. 用lism函数仿真系统速度响应
e. 程序调试成功后实验结果:
A impulse 单位脉冲信号实验结果
B step 单位阶跃信号仿真结果
C lism函数仿真系统速度响应
(4)绘制单位负反馈的开环传递函数
a. 写出num,den
b. 用logspace函数设定频率范围
c 利用bode函数输入幅值增益、相位
d. 把增益值转换为分贝值
e. 添加网格线,并生成二行一列的图表
f. 用semilogx在两个图标中分别生成幅值频率和相频特性曲线。
g. 用margin函数获取开环的幅值裕量和相位裕量。
h. 程序调试后写入实验报告
margin函数获取开环的幅值裕量和相位裕量。
Gm = Inf Pm =126.0768 wcg =NaN wcp = 7.2725
实验三 MATLAB数字控制器设计初步
1 实验目的
(1)掌握离散信号z变换和z逆变换的matlab方法
(2)掌握离散系统的系统函数零极点分布与系统频率特性的matlab实现方法
(3)掌握matlab计算差分方程的方法。
2 实验器材
计算机Win7、Matlab7.0软件
3 实验内容
(1)找到matlab的符号运算工具箱提供的z变换函数ztrans与反变换函数iztrans,通过help理解其用法,并掌握符号表达式的构建和应用。
F=ztrans(f) %求符号函数f的z变换,返回函数的自变量为z;
F=ztrans(f,w) %求符号函数f的z变换,返回函数的自变量为w;
F=ztrans(f,k,w) %对自变量为k的符号函数f求z变换,返回函数的自变量为w。
f=iztrans(F) %对自变量为z的符号函数F求逆z变换,返回函数的自变量为n;
f=iztrans(F,k) %对自变量为z的符号函数F求逆z变换,返回函数的自变量为k;
f=iztrans(F,w,k) %对自变量为w的符号函数F求逆z变换,返回函数的自变量为k。
4 实验步骤及实验内容
(1).已知序列
解:在命令窗口中输入如下命令,即可完成f(k)的z变换
>> syms k
>> f=sym('2^(-k)'); %定义序列
>> F=ztrans(f) %求z变换
F =
z/(z - 1/2)
(2)已知一离散系统的系统函数
解:运行如下M文件,
syms k z
H=sym('z/(z^2+3*z+2)');
h=iztrans(H,k) %求逆z变换
h =
(-1)^k - (-2)^k
(3) MATLAB的zplane函数用于系统函数的零极点图的绘制,调用方式为:
zplane(b,a) 其中, b、a分别为系统函数分子、分母多项式的系数向量
例.已知一离散系统的系统函数
解:在MATLAB的命令窗口中输入如下命令,即可得到其零极点图(图7-1)。
>> a=[1 3 2];
>> b=[1 -0.7 0.1];
>> zplane(b,a) %绘制其零极点图
(4) 若描述离散系统的差分方程为
【解】将差分方程两边取z变化的
将y(-1)=1,y(-2)=0代入第一部分,则零输入响应的表达式为
同理,则零状态激励响应响应的表达式为
如果直接利用iztrans函数进行编程求解如下
clc
syms z
y=0.5*(1/z-1)/(1+1/2*z-1/2*z^2)
y=iztrans(y)
结果:1/2*charfcn[1](n)-3/4*charfcn[0](n)+1/12*2^n+2/3*(-1)^n
(5)已知
F=sym('(s+2)/(s*(s+1)^2*(s+3))');%传递函数F(s)进行符号定义
[numF,denF]=numden(F) ;%提取分子分母
pnumF=sym2poly(numF) ;%将分子转化为一般多项式
pdenF=sym2poly(denF) ;%将分母转化为一般多项式
[R,P,K]=residue(pnumF,pdenF)%部分分式展开
对应部分分式分解结果为:
实验四 控制系统数学模型的MATLAB实现
(用MATLAB展开及合并部分分式)
1 实验目的
(1)掌握matlab展开部分分式的方法
2 实验器材
计算机Win7、Matlab7.0软件
3 实验步骤及实验内容
(1)用matlab展开部分分式
用num和den分别表示G(s)的分子和分母多项式,即
MATLAB提供函数reside用于实现部分分式展开,其句法为
[r, p, k]=reside(num,den)其中,r, p分别为展开后的留数及极点构成的列向量;k 为余项多项式行向量。若无重极点,MATLAB展开后的一般形式为:
若存在q个重极点p(j),则展开式将包括下列各式:
4 实验步骤及实验内容
(1)求下式的部分分式展开
解:>> num=[1 11 39 52 26];
>> den=[1 10 35 50 24];
>> [r,p,k]=residue(num,den)
r =
1.0000
2.5000
-3.0000
0.5000
p =
-4.0000
-3.0000
-2.0000
-1.0000
k =
1
所以展开式为:
函数residue也可用于将部分分式合并,其句法为
[num,den]=residue(r,p,k)
>> r=[1 2 3 4]';p=[-1 -2 -3 -4]';k=0
k =
0
>> [num,den]=residue(r,p,k)
num =
10 70 150 96
den =
1 10 35 50 24
所以合并式为:
实验报告总结:
通过本次实验,培养了一定的动手能力以及一定的交流能力和团队精神,具备了对本专业、本行业等方面的大系统的理解、掌控能力。初步掌握机械设计制造、计算机与电子科学、电气与自动控制、网络与信息检索、传感与检测等基础知识和技术,具有机械工程产品与系统的设计和应用能力。通过本开放实验,初步掌握MATLAB仿真应用软件的建模,仿真方法与过程。同时也通过本次实验,了解了自身的不足,还需要多多学习。