MATLAB与控制系统仿真实验报告

时间:2024.4.13

《MATLAB与控制系统仿真》

实验报告

(20##年第三版)

                    西安邮电大学自动化学院

                                                      

                                                                                                                      周一

                                                          06114067(23)


实验三   MATLAB图形系统

一、实验目的

1.掌握绘制二维图形的常用函数。

2.掌握绘制三维图形的常用函数。

3.熟悉利用图形对象进行绘图操作的方法。

4.掌握绘制图形的辅助操作。

二、实验原理

1,二维数据曲线图

(1)    绘制单根二维曲线 plot(x,y);

(2)    绘制多根二维曲线 plot(x,y) 当x是向量,y是有一维与x同维的矩阵时,则绘制多根不同颜色的曲线。当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

(3)    含有多个输入参数的plot函数 plot(x1,y1,x2,y2,…,xn,yn)

(4)    具有两个纵坐标标度的图形 plotyy(x1,y1,x2,y2)

2,图形标注与坐标控制

1)title (图形名称);

2)xlabel(x轴说明)

3)ylabel(y轴说明)

4)text(x,y图形说明)

5)legend(图例1,图例2,…)

6)axis ([xmin xmax ymin ymax zmin zmax])

3, 图形窗口的分割

subplot(m,n,p)

4,三维曲线

plot3(x1,y1,z1,选项1,x2,y2,选项2,…,xn,yn,zn,选项n)

5,三维曲面

mesh(x,y,z,c) 与surf(x,y,z,c)。一般情况下,x,y,z是维数相同的矩阵。X,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。

6,图像处理

1)       imread和imwrite函数 这两个函数分别用于将图象文件读入matlab工作空间,以及将图象数据和色图数据一起写入一定格式的图象文件。

2)       image和imagesc函数 这两个函数用于图象显示。为了保证图象的显示效果,一般还应使用colormap函数设置图象色图。

三、实验仪器和设备

计算机一台(带有MATLAB6.5以上的软件环境)。

四、预习要求

1.复习二维与三维图形的绘图函数。

2.复习图形辅助操作。

五、实验内容及步骤

1,设,在x=0~2π区间取101点,绘制函数曲线。

>> x=0:0.02*pi:2*pi;

y=(0.5+3*sin(x)/(1+x.^2))*cos(x);

plot(x,y);

>> grid

2,已知y1=x2,y2=cos(2x),y3=y1*y2,完成下列操作:

(1)在同一坐标系下用不同的颜色和线型绘制三条曲线;

>> y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

plot(x,y1,x,y2,x,y3);

(2)    分别用条形图、阶梯图、杆图和填充图绘制三条曲线。

>> subplot(2,2,1),bar(x,y1);

>> subplot(2,2,2),bar(x,y2);

>>subplot(2,2,3),bar(x,y3); >> subplot(2,2,1);stairs(x,y1);

subplot(2,2,2);stairs(x,y2);

subplot(2,2,3);stairs(x,y3); >> subplot(2,2,1),stem(x,y1);

subplot(2,2,2),stem(x,y2);

subplot(2,2,3),stem(x,y3); >> subplot(2,2,1),area(x,y1);

subplot(2,2,2),area(x,y2);

subplot(2,2,3),area(x,y3);

3,已知

在-5<=x<=5区间绘制函数曲线。

>>x=-5:0.1:5;

>>y=((x+sqrt(pi))./exp(2)).*(x<=0)+0.5.*log(x+sqrt(1+x.^2)).*(x>0);

>> plot(x,y)

>> grid

4,绘制函数的曲面图和等高线

其中x的21个值均匀分布在[-5,5]范围,y的31个值均匀分布在[0,10],要求使用subplot(2,1,1)和subplot(2,1,2)将产生的曲面图和登高图画在同一个窗口上。

>> x=-5:(10/20):5;

y=0:(10/30):10;

[x,y]=meshgrid(x,y);

z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)./4);

>> subplot(2,1,1),mesh(x,y,z);

>> subplot(2,1,2),meshc(x,y,z);.....

5.将图形窗口分成两格,分别绘制正割和余割函数曲线,并加上适当的标注。

要求:1)必须画出0到,即一个周期的曲线。

      2)正割曲线为红色点划线输出,余割曲线为蓝色实线输出。

      3)图形上面表明正割和余割公式,横轴标x,纵轴标y。

      4)将图形窗口分成两格,正割在上,余割在下。

>> x=0:0.01:2*pi;

y1=sec(x);

y2=csc(x);

subplot(2,1,1),plot(x,y1,'r');

title('y=sec(x)');

xlabel('x');

>> ylabel('y');

>> grid

>> subplot(2,1,2),plot(x,y2,'b');

title('y=csc(x)');

xlabel('x');

ylabel('y');

grid

    6.绘制极坐标曲线,并分析参数对曲线形状的影响。

    >> a=5;

>> b=pi/3;

>> n=2;

>> theta=0:0.01:5*pi;

>> y=a.*sin(b+n.*theta);

>>polar(theta,y,'b')

a决定了最外圆的半径,b决定了扇形的分布情况,n决定了扇形的数目。

7.将图形窗口分成两个窗格,分别绘制出函数:

               

在[0,3]区间上的曲线,并利用axis调整轴刻度纵坐标刻度,使在[0,12]区间上,在[-2,1.5]区间上。

>> x=0:0.01:3;

y1=2*x+5;

y2=x.^2-3*x+1;

subplot(1,2,1),plot(x,y1);

axis([0 3 0 12]);

grid

subplot(1,2,2),plot(x,y2);

axis([0 3 -2 1.5]);

grid

8.画出函数

         的曲面及等高线图。

>> x=-20:0.01:20;

y=-20:0.01:20;

[x,y]=meshgrid(x,y);

z=x.^2+y.^2+sin(x.*y);

mesh(x,y,z);

meshc(x,y,z);

9.综合实例中,还有一种最常用的电力系统无源滤波器单调谐滤波器,其结构如图3-2所示,其阻抗表达式为:

式中,次谐波角频率,为基波角频率。当设在[0.5,25]取值时,单调谐滤波器的阻抗与谐波次数的曲线如图3-4所示,试编写程序完成曲线的画取(注意图中各个地方的标注均用程序实现)。

10.用曲面图表现函数,的范围从-4到4,设置当前图形的颜色板从黑色到暗红、洋红、黄色、白色的平滑变化,打开网格。

>> x=-4:0.01:4;

>> y=-4:0.01:4;

>> [x,y]=meshgrid(x,y);

>> z=x.^2+y.^2;

>> mesh(x,y,z);

>> meshc(x,y,z);

>>colorbar('hot');

11. 根据绘制平面曲线,并分析参数对其形状的影响。


实验四   MATLAB程序设计

一、实验目的

1.掌握利用if语句实现选择结构的方法。

2.掌握利用switch语句实现多分支选择结构的方法。

3.掌握利用for语句实现循环结构的方法。

4.掌握利用while语句实现循环结构的方法。

二、实验设备及条件

    计算机一台(带有MATLAB6.5以上的软件环境)。    

三、实验内容

1.编写求解方程的根的函数(这个方程不一定为一元二次方程,因的不同取值而定),这里应根据的不同取值分别处理,有输入参数提示,当时应提示“为恒不等式!”。并输入几组典型值加以检验。disp('关于方程 ax^2+bx+c=0')

a=input('请输入系数a=');

b=input('          b=');

c=input('          c=');

if a==0&&b==0

     if c==0

     disp('解为全体实数');   

     else

         disp('为恒不等式!');   

     end

else

P=[a,b,c];  x=roots(P)

end

disp('关于方程ax^2+bx+c=0')

a=input('请输入系数a=');

b=input('          b=');

c=input('          c=');

if a==0&&b==0    

   if c==0 

   disp('解为全体实数');   

   else

   disp('为恒不等式!'); 

   end

else

    P=[a,b,c]; x=roots(P)

 end

关于方程ax^2+bx+c=0

请输入系数a=3

          b=5

          c=7

x =

  -0.8333 + 1.2802i

  -0.8333 - 1.2802i

关于方程ax^2+bx+c=0

请输入系数a=2

          b=4

          c=6

x =

  -1.0000 + 1.4142i

  -1.0000 - 1.4142i

2.输入一个百分制成绩,要求输出成绩等级A+、A、B、C、D、E。其中100分为A+,90分~99分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。

要求:(1)用switch语句实现。

     (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。g=input('请输入成绩')

   if g<0||g>100

       disp('错误,输入的成绩应为0~100之间的数')

   else

       g=fix(g/10);

   switch g

   case{10}

        disp('A+');

   case{9}

        disp('A');

   case {8}

        disp('B');

   case {7}

        disp('C');

   case {6}

        disp('D')

   otherwise

        disp('E');

   end

   end

请输入成绩80

g =

    80

B

3. 利用for循环语句编写计算n!的函数程序,取n分别为-89、0、3、5、10验证其正确性(输入n为负数时输出出错信息)。

n=input('请输入n=');

if n<0

    disp('错误,n取值必须为正数');

else

y=1;

for i=1:n

    y=y*i;

end

disp('n!=');

disp(y)

end

请输入n=6

n!=

   720

4. Fibonacci数组的元素满足Fibonacci规则: ,;且。现要求该数组中第一个大于10000的元素。

a(1)=1;

a(2)=1;

i=2;

while a(i)<=10000

    a(i+1)=a(i-1)+a(i);

    i=i+1;

end;

i,a(i)

i =

       21

    ans =

       10946

5.根据,求的近似值。当n分别取100、1000、10000时,结果是多少?

n=[100 1000 10000];

for j=1:3

    y=0;

    k=n(j);

    for i=1:k

        y=y+1/i/i;

    end

    pai=sqrt(6*y);

    disp('n=');

    disp(n(j));

    disp('π的近似值为');

    disp(pai);

end

n=

   100

π的近似值为

    3.1321

n=

        1000

π的近似值为

    3.1406

n=

       10000

π的近似值为

    3.1415

6. 有一分数序列:

       

     编写一段程序,求前16项的和。

>> a=1;b=1;sum=0;

>> for i=1:15

c=a+b;  

sum=sum+c/b;

a=b; b=c;

end

>> sum

sum =

   24.5701

7,已知:

中:

(1)最大值、最小值、各数之和;

(2)正数、零、负数的个数。

8. 建立5×6矩阵,要求输出矩阵第n行元素,当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。

9,根据,求的近似值。当n分别取100,1000,10000时,结果是多少?


实验五   MATLAB函数文件

 

一、实验目的

1,理解函数文件的概念;

2,掌握定义和调用matlab函数的方法。

二、实验原理

1,函数文件的定义:

    函数文件是另一种形式的m文件,每一个函数文件都定义一个函数,事实上,matlab提供的标准函数大部分都是由函数文件定义的。

2,函数文件的基本结构

函数文件由function语句引导,其基本结构为:

Function 输出形参表=函数名(输入形参表)

注释说明部分

函数体语句

其中以function开头的一行为引导行,表示该m文件是一个函数文件。

3,函数调用

   函数文件编制好之欧,就可以调用函数进行计算了,函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

三、实验仪器和设备

1. 计算机一台(带有MATLAB6.5以上的软件环境)。

四、预习要求

1.复习函数的定义与编写原则。

2.复习函数的调用。

五、实验内容

1,一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。例如13是绝对素数。试求所有的两位绝对素数。

要求:定义一个判断素数的函数文件。

for a=10:99

    if isprime(a)

        g=rem(a,10);

        s=fix(a/10);

        b=10*g+s;

        if isprime(b)

            disp(a)

        end

    end

end

    11

    13

    17

    31

    37

    71

    73

    79

    97

2,已知

(1)    当时,求y值;

function x=fn(n)

 x=n+10*log(n^2+5);

 end

调用fn.m的命令文件文件

y=fn(40)/(fn(30)+fn(20))

y =

    0.6390

(2)    当时,求y值。

function m=fun(n)

if n<=0

    m=0;

else

    m=n*(n+1)+fun(n-1);

end

end

调用fun.m的命令文件

y=fun(40)/(fun(30)+fun(20))

y =

    1.7662


 

实验六 matlab数据处理与多项式计算

一、实验目的

1,掌握数据统计和分析的方法;

2,掌握数值插值与曲线拟合的方法;

3,掌握多项式计算的常用运算。

二、实验原理

1,数据统计处理

1)最大值与最小值

(a) 求向量的最大值与最小值 y=max(X) 与 [y,I]=max(X)

(b) 求矩阵的最大值和最小值 max(A) 与 [Y,U]=max(A), max(A,[],dim)

2) 求和与求积  sum(X), prod(X) sum(A)

3) 标准方差与相关系数

  a)Y=std(A,flag,dim)

  b)  corrcoef(X)

2, 数据差值

 a) 一维数据差值 Y1=interp1(X,Y,X1,’method’)

 b) 二维数据差值 Z1=interp2(X,Y,Z,X1,Y1,’method’)

3, 曲线拟合

 [P,S]=polyfit(X,Y,m)

4, 多项式计算

1)多项式的加减计算

2)多项式乘法运算 Y=conv(P1,P2)

3) 多项式除法 [Q,r]=deconv(P1,P2)

4) 多项式的导函数

    p=polyder(P): 求多项式P的导函数

    p=polyder(P,Q): 求P.Q的导函数

[p,q]=polyder(P,Q):求 P/Q的导函数,导函数的分子存入p,分母存入q。

5,多项式求值

1) 代数多项式求值 Y=polyval(P,x)

2) 矩阵多项式求值 polyvalm

6,多项式求根 x=roots(P)

三、实验仪器和设备

1. 计算机一台(带有MATLAB6.5以上的软件环境)。

四、预习要求

1.复习matlab多项式数值分析函数。

2.复习matlab曲线拟合与多项式计算函数。

五、实验内容及步骤

1,利用matlab提供的rand函数生成30,000个符合均匀分布的随机数,然后检验随机数的性质:

(1)    均值和标准方差;

(2)    最大元素与最小元素;

大于0.5的随机数个数占总数额百分比。

k=0;

x=rand(1,30000);

disp(['随机数的均值为:',num2str(mean(x))])

disp(['随机数的标准方差为:',num2str(std(x))])

disp(['随机数的最大元素为:',num2str(max(x))])

disp(['随机数的最小元素为:',num2str(min(x))])

disp(['大于0.5的随机数个数占总数的百分比为:',num2str(size(find(x>0.5))/size(x)*100),'%'])

随机数的均值为:0.49875

随机数的标准方差为:0.28898

随机数的最大元素为:0.99997

随机数的最小元素为:4.8345e-005

大于0.5的随机数个数占总数的百分比为:50.0567%

2,将100个学生5门功课的成绩存入矩阵P中,进行如下处理:

(1)分别求每门课的最高分、最低分及相应学生序号;

(2)分别求每门课的平均分和标准方差;

(3)5门课总分的最高分、最低分及相应学生序号;

(4)将5门课总分按照从大到小的顺序存入zcj中,相应学生序号存入xsxh。

提示:上机调试时,为避免输入学生成绩的麻烦,可用取值范围在[45,95]之间的随机矩阵来表示学生成绩。A=45+(95-45)*rand(100,5);

[x1,y1]=max(A)

[x2,y2]=min(A)

mean(A)

std(A)

[x3,y3]=max(sum(A,2))

[x4,y4]=min(sum(A,2))

s=sum(A,2);

[zcj,xsxh]=sort(s,1,'descend')

x1 =

   94.9423   94.5937   93.9424   94.8336   94.4276

y1 =

    36    91    43    19    80

x2 =

   45.6523   45.4386   46.5305   45.7780   45.1957

y2 =

    48    20    16    43    35

ans =

   68.1119   71.1615   73.7554   73.4073   66.2990

ans =

   13.8157   15.0664   13.5302   13.8475   14.1051

x3 =

  444.4719

y3 =

    87

x4 =

   286.8945

y4 =

82

3,已知lgx在[1,101]区间10个整数采样点的函数值如下表所示:

试求lgx的5次拟合多项式p(x),并绘制lgx和p(x)在[1,101]区间的函数。

x=1:10:101;

y=[0,1.0414,1.3222,1.4914,1.6128,1.7076,1.7853,1.8513,1.9085,1.9590,2.0043];

p =

0.0000   -0.0000    0.0001   -0.0058    0.1537   -0.1326

p=polyfit(x,y,5)

x1=1:0.5:101;

y1=log10(x1);

p1=polyval(p,x1);

plot(x1,y1,'g:',x1,p1,'r-')

4,有三个多项式p1(x)=x4+2x3+4x2+5,p2(x)=x+2,p3(x)=x2+2x+3,试进行下列操作:

(1)    求P(x)=P1(x)+P2(x)P3(x);

p1=[1 2 4 0 5]

p2=[0 0 0 1 2]

p3=[0 0 1 2 3]

p8=conv(p2,p3)

pua=[0 0 0 0 1 2 4 0 5]

p=pua+p8

p1 =

     1     2     4     0     5

p2 =

     0     0     0     1     2

p3 =

     0     0     1     2     3

p8 =

     0     0     0     0     0     1     4     7     6

pua =

     0     0     0     0     1     2     4     0     5

p =

     0     0     0     0     1     3     8     7    11

(2)求P(x)的根;

  x=roots(p)

x =

  -1.3840 + 1.8317i

  -1.3840 - 1.8317i

  -0.1160 + 1.4400i

  -0.1160 - 1.4400i

(3)当x取矩阵A的每一元素时,求P(x)的值,其中

   A=[-1 1.2 -1.4;0.75 2 3.5;0 5 2.5]

polyval(p,A)

A =

   -1.0000    1.2000   -1.4000

    0.7500    2.0000    3.5000

         0    5.0000    2.5000

ans =

  1.0e+003 *

    0.0100    0.0382    0.0125

    0.0223    0.0970    0.4122

    0.0110    1.2460    0.1644

 (4)当以矩阵A为自变量时,求P(x)的值,其中A的值与(3)题相同。

A=[-1 1.2 -1.4;0.75 2 3.5;0 5 2.5]

polyvalm(p,A)

ans =

  1.0e+003 *

    0.0076   -0.1281   -0.0775

    0.1328    1.3900    1.1644

    0.1824    1.7364    1.5198

更多相关推荐:
控制系统仿真实验二报告

实验二面向结构图的仿真四思考题1在未考虑调节阀饱和特性时讨论一下两个水箱液位的变化情况工业上是否允许讨论阀位的变化情况工业上是否能实现答在一开始阀位大开H1H2液位上升迅速很快就达到预期值但显然不能在工业上实现...

控制系统仿真实验报告

控制系统仿真实验报告一实验目的进一步掌握数值积分法进一步掌握MATLAB软件的使用方法二实验设备数字计算机MATLAB软件三实验预备1将传递函数化为一阶微分方程组即状态方程令y1yy2y则yy1y1y2y406...

控制系统仿真实验报告 (2)

昆明理工大学电力工程学院学生实验报告实验课程名称控制系统仿真实验开课实验室年月日实验一电路的建模与仿真一实验目的1了解KCLKVL原理2掌握建立矩阵并编写M文件3调试M文件验证KCLKVL4掌握用simulin...

控制系统仿真实验报告

附件四学生实验报告表头格式昆明理工大学电力工程学院学生实验报告实验课程名称开课实验室年月日实验一电路的建模与仿真一实验目的1了解KCLKVL原理2掌握建立矩阵并编写M文件3调试M文件验证KCLKVL4掌握用si...

MATLAB与控制系统仿真实验报告

MATLAB与控制系统仿真实验报告20xx20xx学年第1学期专业班级学号姓名实验三MATLAB图形系统一实验目的1掌握绘制二维图形的常用函数2掌握绘制三维图形的常用函数3熟悉利用图形对象进行绘图操作的方法4掌...

基于MATLAB控制系统仿真实验报告

中南大学计算机控制系统仿真实验报告信息科学与工程学院自动化0903班实验一MATLAB语言编程一实验目的1熟悉Matlab语言及其环境掌握编程方法2要求认真听取实验指导老师讲解与演示二具体实验内容步骤要求1运行...

《自动控制原理》仿真实验报告

中国地质大学江城学院自动控制原理仿真实验报告姓名吴丽芳班级数控2班学号指导教师祁锋20xx年12月9日目录实验一MATLAB软件的安装与认知实验二使用软件进行数值运算和绘图实验三采用SIMULINK仿真模块进行...

中南大学控制系统仿真实验报告

控制系统仿真实验报告控制系统仿真实验报告学院信息科学与工程学院班级姓名学号控制系统仿真实验报告目录实验一MATLAB语言编程3一实验目的3二具体实验内容步骤要求3三实验心得5实验二数值积分算法练习与函数调用6一...

控制系统仿真实验报告

控制系统仿真实验报告册实验课程专业班级学生姓名学生学号指导教师月实验报告须知实验的最后一个环节是实验总结与报告即对实验数据进行整理绘制波形和图表分析实验现象撰写实验报告每次实验都要独立完成实验报告撰写实验报告应...

PID控制系统的Simulink仿真实验报告

自动控制原理实验报告PID控制系统的Simulink仿真1实验目的1掌握PID控制规律及控制器的实现2对给定系统合理地设计PID控制器3掌握对给定系统进行PID控制器参数在线实验工程整定的方法2实验原理在串联校...

青岛理工大学控制系统仿真实验报告

青岛理工大学自动化工程学院实验报告课程控制系统仿真专业自动化班级姓名学号指导教师赵宏才时间年月日目录实验一MATLAB环境的熟悉与基本运算1实验二MATLAB语言的程序设计6实验三MATLAB的图形绘制9实验四...

系统辨识与仿真实验大报告

东南大学自动化学院实验报告课程名称系统辨识实验名称系统辨识与仿真院系自动化专业自动化姓名学号同组人员实验时间20xx年月日评定成绩审阅教师实验一给定系统Gs12345s102ss4用连续系统仿真方法求零时刻的单...

控制系统仿真实验报告(19篇)