当前位置:文档之家› MATLAB控制系统仿真实验报告

MATLAB控制系统仿真实验报告

清华大学自动化工程学院实验报告课程:控制系统仿真专业自动化班级 122姓名学号指导教师:时间: 2015 年 10 月 19 日— 10 月 28 日目录实验一 MATLAB环境的熟悉与基本运算 (1)实验二 MATLAB语言的程序设计 (6)实验三 MATLAB的图形绘制 (9)实验四采用SIMULINK的系统仿真 (14)实验五控制系统的频域与时域分析 (17)实验六控制系统PID校正器设计法 (23)实验一 MATLAB环境的熟悉与基本运算一、实验时间及地点:实验时间:上午8:30—9:30实验地点:计算中心二、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算三、实验内容:1、新建一个文件夹(自己的名字命名,在机器的最后一个盘符)2、启动,将该文件夹添加到MATLAB路径管理器中。

3、保存,关闭对话框4、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)5、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。

6、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、 exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。

注意:每一次M-file的修改后,都要存盘。

练习A:(1)help rand,然后随机生成一个2×6的数组,观察command window、command history和workspace等窗口的变化结果(2)学习使用clc、clear,了解其功能和作用(3)输入一个2维数值数组,体会标点符号的作用(空格和逗号的作用)。

(4)一维数组的创建和寻访,创建一个一维数组(1×8)X,查询X数组的第2个元素,查询X数组的第3个元素到第6个元素,查询X数组的第5个元素到最后一个元素,查询X数组的第3、2、1个元素,查询X数组中≤5元素,将X数组的第2个元素重新赋值为111,实例expm1。

(5)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A 第2行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有元素,查询数组A按列拉长形成新的数组B(1×8),查询数组A按行拉长形成新的数组C(1×8),以全元素赋值的方式对数组A赋值。

(6)两种运算指令形式和实质内涵的比较。

设有3个二维数组A2×4,B2×4,C2×2,写出所有由2个数组参与的合法的数组运算和矩阵指令(7)学习使用表8列的常用函数(通过help方法)(8) 学习使用表9数组操作函数(9) 学习字符串的创建,a='This is an example.'串数组的大小size(a)串数组的元素标识a14=a(1:4) ra=a(end:-1:1)对字符串ASCLL 码的数组操作w=find(a>='a'&a<='z');ascii_a(w)=ascii_a(w)-32;%英文大小写字母ASCLL 值差32(小-32=大)char(ascii_a)练习B(10) 创建符号对象与函数命令sym ()、syms ()与 class ()的熟悉和运用。

有符号表达式:kp cky bpx bcxy apx y acx e +++++=221,p cy e +=2 试计算?21=e e 与?\21=e e四、实验操作过程(实验说明)>>help rand %用help 指令学习rand 的用法rand - Uniformly distributed pseudorandom numbersThis MATLAB function returns a pseudorandom scalar drawn from the standarduniform distribution on the open interval (0,1).r = randr = rand(n)r = rand(sz1,...,szN)r = rand(sz)r = rand(classname)r = rand(n,classname)r = rand(sz1,...,szN,classname)r = rand(sz,classname)r = rand('like',p)r = rand(n,'like',p)r = rand(sz1,...,szN,'like',p)r = rand(sz,'like',p)>> rand(2,6) %随机生成一个2×6的数组ans =>> clear %清除命令窗口>> [1 2;3 4] %输入一个二维数组ans =1 23 4>> [1,2;3,4] %将空格改为逗号效果一致ans =1 23 4>> a=[1 2 3 4;5 6 7 8];>> b=a(2:2,3:4) %逗号前面是行,后面是列,冒号前后的数表示所选范围b =7 8>> eye(3) %产生单位矩阵ans =1 0 00 1 00 0 1>> magic(3) %产生魔方矩阵ans =8 1 63 5 74 9 2>> flipud(ans) %以数组“水平中线”为对称轴,交换上下对称位置上的元素ans =4 9 23 5 78 1 6>> rot90(ans) %逆时针旋转数组90°ans =2 7 69 5 14 3 8>> a='hello'a =hello>> b=size(a) %字符串a的大小为1x5b =1 5>> syms x y p k a b c %创建符号对象>> e1=x^2*a*c*y+a*p*x^2+b*p*x+c*k*y+k*p %创建函数命令e1 =k*p + a*p*x^2 + c*k*y + b*p*x + a*c*x^2*y>> e2=c*y+pe2 =p + c*y>> e1/e2ans =(k*p + a*p*x^2 + c*k*y + b*p*x + a*c*x^2*y)/(p + c*y)>> a=[1 2]a =1 2>> c=reshape(a,2,1) %改变数组a的行数和列数c =12五、实验结果及讨论1.熟悉了MATLAB的基本软件操作。

2.通过本次实验熟悉了 MATLAB 的开发环境掌握了矩阵、变量、表达式的各种运算了解了*与.*、/与\、^与.^等区别以及绝对值、开方 e的阶乘、正弦、正切的运算的符号。

3.让我明白了MATLAB的实用性。

实验二 MATLAB 语言的程序设计一、实验时间及地点:实验时间:上午8:30—9:30实验地点:黄岛老校区计算中心二、实验目的:1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、 了解和熟悉跨空间变量传递和赋值三、实验内容:练习A1、 熟悉MATLAB 程序编辑与设计环境2、 用for 循环语句实现求1~100的和3、 用for 循环语句实现编写一个求n 阶乘的函数文件练习B思考题4、 已知一维数组]10,8,5,4,2[=A 、]4,7,6,9,4[=B ,用for 循环语句实现∑=+-n i i n iB A 11。

求和函数可用()sum5、 (1)编写求解一维数组平均值的函数文件。

(2)编写求解二维数组平均值的函数文件。

四、实验操作过程(实验说明)1. 用for 循环语句实现求1~100的和,函数名为theSec().程序:a=0;for i=1:100a=i+a;endfprintf('%d\n',a)执行结果:>> theSec %求1~100的和50502. 用for 循环语句实现编写一个求n 阶乘的函数文件,函数名为jiex(x). 程序:function jiex(x)a=1;for i=1:xa=a*i;endfprintf('%d\n',a)执行结果:>> jiex(4) % 求4的阶乘243. 已知一维数组]10,8,5,4,2[=A 、]4,7,6,9,4[=B ,用for 循环语句实现∑=+-n i i n iB A 11。

求和,函数名用ABsum()程序:function y=ABsum()a=[2,4,5,8,10];b=[4,9,6,7,4];n=5;sum=0;for i=1:nsum=sum+a(1,i)*b(1,n-i+1);endy=sum;执行结果: >> ABsum()ans =1784.编写求解任意数组平均值的函数文件,函数名为avg(f).程序:function y=avg(f)[m,n]=size(f);sum=0;for i=1:mfor j=1:nsum=sum+f(i,j);endendy=sum/(m*n);执行结果:>> a=[1,2,3,4;5,6,7,8] %定义一个数组a =1 2 3 45 6 7 8>> avg(2*a) %求数组2*a的平均值ans =9五、实验结果及讨论1.编程语句:循环语句有for循环和while循环,我习惯使用for循环,使用格式如下:for 循环变量=表达式1(初值):表达式2(增量):表达式3(终值)循环语句组end条件判断语句if 语句格式为: if 表达式 执行语句end实验三 MATLAB 的图形绘制一、实验时间及地点:实验时间:上午8:30—9:30 实验地点:黄岛老校区计算中心二、实验目的:1、学习MATLAB 图形绘制的基本方法;2、熟悉和了解MATLAB 图形绘制程序编辑的基本指令;3、熟悉掌握利用MATLAB 图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;4、掌握plot 、subplot 的指令格式和语法。

三、实验内容: 练习A【1】 二维曲线绘图基本指令演示。

t=(0:pi/50:2*pi)'; k=::1; Y=cos(t)*k; plot(t,Y)plot 指令基本操作演示【2】用图形表示连续调制波形)9sin()sin(t t y 及其包络线。

相关主题