MATLAB实验报告 2

时间:2024.3.31

                   成绩:______

课程名称:  现代控制理论基础    

实验名称:线性系统理论上机实验 

院 (系):    信控学院          

专业班级:    自动化1001        

姓    名:                       

学    号:                       

指导教师:      嵇启春          

                           年   月   日


实验一:MATLAB运算基础

日期:  20## 3 9

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

一、实验目的

1.       熟悉启动和退出MATLAB的方法。

2.       熟悉MATLAB命令窗口的组成。

3.       掌握建立矩阵的方法。

4.       掌握MATLAB各种表达式的书写规则以及常用函数的使用。

二、实验环境

MATLAB 6.5 开发平台

三、实验内容

1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。

(1)z=(2)z=ln(x+) , 其中x=

(3)z=sin(a+0.3)+ln ,a=-3.0,-2.9,-2.8,…,2.8,2.9,3.0(提示:利用冒号表达式生成a向量,求个点的函数值时用点乘运算。)

(4)z= ,其中t=0:0.5:2.5(提示:用逻辑表达式求分段函数值。)

2.       已知:

          A=     B=

   求下列表达式的值:

(1)       A+6*B和A-B+I(其中I为单位矩阵)

(2)       A*B和A.*B

(3)       A^3和A.^3

(4)       A/B及B\A

(5)       [A,B]和[A([1,3], : );B^2]

3. 设有矩阵A和B

A=   B=

(1)    求它们的乘积C。

(2)    将矩阵C的右下角3*2子矩阵赋给D。

(3)    查看MATLAB工作空间的使用情况。

4. 完成下列操作:

(1)       求[100,999]之间能被21整除的数的个数。

  提示:先利用冒号表达式,再利用find和length函数。

(2)       建立一个字符串向量,删除其中的大写字母。

  提示:利用find函数和空矩阵。

四、实验的程序代码

先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。

(1)z1=2*sin(85*pi/180)/(1+exp(2))

z1 =

0.2375

(2)x=[2 1+2i;-0.45 5];

z2=log(x+sqrt(1+x.^2))/2

z2 =

           0.7218             0.7347 + 0.5317i

           -0.2180             1.1562    

(3)a=-3:0.1:3

z3=(exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3)+log((0.3+a)/2)

(4)t=0:0.5:2.5

z4=(0<=t&t<1).*t.*t+(1<=t&t<2).*(t.^2-1)+(2<=t&t<3).*(t.^2-2*t+1)

显示工作空间的变量和变量值

a         1x61                      488  double array

          t         1x6                        48  double array

  x         2x2                        64  double array (complex)

  z1        1x1                         8  double array

  z2        2x2                        64  double array (complex)

  z3        1x61                      976  double array (complex)

  z4        1x6                        48  double array

保存全部变量

save mydata  %将工作空间全部变量保存到mydata.mat文件中

2.已知

A=[12 34 -4;34 7 87;3 65 7]

B=[1 3 -1;2 0 3;3 -2 7]

(1)

A+6*B

ans =

    18    52   -10

    46     7   105

21    53    49

A-B+eye(size(A))

ans =

    12    31    -3

    32     8    84

     0    67     1

(2)

A*B

ans =

    68    44    62

   309   -72   596

   154    -5   241

A.*B

ans =

    12   102     4

    68     0   261

     9  -130    49

(3)

A^3

ans =

       37226      233824       48604

      247370      149188      600766

       78688      454142      118820

A.^3

ans =

        1728       39304         -64

       39304         343      658503

          27      274625         343

(4)

A/B

ans =

   16.4000  -13.6000    7.6000

   35.8000  -76.2000   50.2000

   67.0000 -134.0000   68.0000

B\A

ans =

109.4000 -131.2000  322.8000

  -53.0000   85.0000 -171.0000

  -61.6000   89.8000 -186.2000

(5)

[A,B]

ans =

    12    34    -4     1     3    -1

    34     7    87     2     0     3

     3    65     7     3    -2     7

[A([1,3],:);B^2]

ans =

    12    34    -4

     3    65     7

     4     5     1

    11     0    19

20    -5    40

3.已知矩阵:

A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]

B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]

(1)

C=A*B

C =

    93   150    77

   258   335   237

   423   520   397

   588   705   557

   753   890   717

(2)

D=C(3:5,2:3)

D =

   520   397

   705   557

   890   717

4.完成下列操作:

(1)

ind=find(rem(x,21)==0)

length(ind)

ans =

43

或者用一下程序

x=x(find(rem(x,21)==0))

x =

  Columns 1 through 21

   105   126   147   168   189   210   231   252   273   294   315   336   357   378   399   420   441   462   483   504   525

  Columns 22 through 42

   546   567   588   609   630   651   672   693   714   735   756   777   798   819   840   861   882   903   924   945   966

  Column 43

   987

length(x)

ans =

43

(2)

str='adodfjoAWEREOTPET'

k=find(str>='A'&str<='Z')

str(k)=[]

五、实验小结

通过这次实验我熟悉了启动和退出MATLAB的方法,熟悉了MATLAB命令窗口的组成,掌握了建立矩阵的方法掌握MATLAB各种表达式的书写规则以及常用函数的使用。熟练启动、退出MATLAB的方法以及MATLAB命令窗口的组成。而且熟悉了建立矩阵的方法和MATLAB各种表达式的书写规则以及常用函数的使用。

实验二:MATLAB矩阵分析与处理

日期:  20## 311

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

实验目的

1.掌握生成特殊矩阵的方法。

2.掌握矩阵分析的方法。

3.用矩阵求逆发解线性方程组。

二、实验环境

  MATLAB6.5开发平台

三、实验内容

1.设有分块矩阵A=,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证A=

3.建立一个55矩阵,求它的行列式、迹、秩和范数。

4.已知A=,求A的特征值及特征向量,并分析其数学意义。

5.下面是一个线性方程组:=

(1)求方程组的解。

(2)将方程组右边元素b改为0.53,在求解,并比较b的变化和解的相对变化。

(3)计算系数矩阵A的条件数并分析结论。

四、实验的程序代码

1.

E=eye(3,3)

R=rand(3,2)

O=zeros(2,3)

S=diag([1,1])                 或者S=diag(1:2)

A=[E R;O S]

A =

    1.0000         0         0    0.4103    0.3529

         0    1.0000         0    0.8936    0.8132

         0         0    1.0000    0.0579    0.0099

         0         0         0    1.0000         0

         0         0         0         0    1.0000

>> A^2

ans =

    1.0000         0         0    0.8205    0.7057

         0    1.0000         0    1.7873    1.6263

         0         0    1.0000    0.1158    0.0197

         0         0         0    1.0000         0

         0         0         0         0    1.0000

[E R+R*S;O S*S]

ans =

    1.0000         0         0    0.8205    0.7057

         0    1.0000         0    1.7873    1.6263

         0         0    1.0000    0.1158    0.0197

         0         0         0    1.0000         0

         0         0         0         0    1.0000

3.

A=rand(5,5)

A =

    0.1389    0.1988    0.4660    0.6721    0.8318

    0.2028    0.0153    0.4186    0.8381    0.5028

    0.1987    0.7468    0.8462    0.0196    0.7095

    0.6038    0.4451    0.5252    0.6813    0.4289

    0.2722    0.9318    0.2026    0.3795    0.3046

>> det(A)

ans =

   -0.0627

>> trace(A)

ans =

1.9863

rank(A)

ans =

     5

>> a1=norm(A,1)

a1 =

    2.7776

a2=norm(A,2)

a2 =

    2.3766

>> ainf=norm(A,inf)

ainf =

    2.6842

4、

A=[-29 6 18;20 5 12;-8 8 5]  

A =

   -29     6    18

    20     5    12

    -8     8     5  

>> [V,D]=eig(A)  

V =

    0.7130    0.2803    0.2733

   -0.6084   -0.7867    0.8725

    0.3487    0.5501    0.4050

D =

  -25.3169         0         0

         0  -10.5182         0

         0         0   16.8351  

5.

A=[1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6]

b=[0.95 0.67 0.52]'  

A =

    0.5000    0.3333    0.2500

    0.3333    0.2500    0.2000

    0.2500    0.2000    0.1667

b =

    0.9500

    0.6700

    0.5200  

x=A\b  

x =

    1.2000

    0.6000

    0.6000  

(2)

b(3)=0.53  

b =

    0.9500

    0.6700

    0.5300  

>> x=inv(A)*b  

x =

    3.0000

   -6.6000

    6.6000  

(3)

cond(A,1)  

ans =

  2.0150e+003  

cond(A,2)  

ans =

  1.3533e+003  

>> cond(A,inf)  

ans =

  2.0150e+003  

分析:矩阵A的条件数远远大于1,说明矩阵A是个病态矩阵,矩阵元素的轻微变化会引起解的很大变化

五、实验小结

通过这次试验我掌握了生成特殊矩阵的方法和矩阵分析的方法并且会用矩阵求逆法解线性方程组熟悉了生成特殊矩阵的方法以及矩阵分析的方法,还有用矩阵求逆发解线性方程组。

实验三:选择结构程序设计

日期:  20## 316

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

实验目的

1.掌握建立和执行M文件的方法。

2.掌握利用if语句事先选择结构的方法。

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

4.掌握try语句的使用。

二、实验环境

   MATLAB6.5开发平台

三、实验内容

1.求分段函数的值。

y= ,用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

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

  要求:(1)分别用if语句和switch语句实现。

a)       输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。

3.  硅谷公司员工的工资计算方法如下:

(1)   工资时数超过120小时者,超过部分加分15%。

(2)   工资时数低于60小时者,扣发700元。

(3)   其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。

4.  设计程序,完成俩位数的加、减、乘、除四则运算,即产生俩个俩位随机整数,在输入一个运算符号,做相应的运算,并显示相应的结果。

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

四、实验的程序代码

1.

for x=[-5,-3,1,2,2.5,3,5]

if x<0 & x~=-3

           y=x.*x+x-6;

elseif x>=0 & x<5 & x~=2 & x~=3

           y=x.*x-5*x+6;

else

           y=x.^2-x-1;

end

y

end  

y =

    14

y =

    11

y =

     2

y =

     1

y =

   -0.2500

y =

     5

y =

    19  

2.

(1)用if语句实现:

x=input('请输入一个成绩');

if x<=100 & x>=90

    disp('成绩等级为:A');

elseif x<90 & x>=80

    disp('成绩等级为:B');

elseif x<80 & x>=70

    disp('成绩等级为:C');

elseif x>=60 & x<70

    disp('成绩等级为:D');

elseif x>=0 & x<60

    disp('不及格');

else

    disp('输入的成绩不合理')

end  

用switch语句实现:

x=input('请输入一个成绩');

switch floor(x/10)

    case {9,10}

        disp('成绩等级为:A');

    case {8} 

        disp('成绩等级为:B');

    case {7}

        disp('成绩等级为:C');

    case {6}

        disp('成绩等级为:D');

    case {0,1,2,3,4,5}

        disp('不及格');

    otherwise

        disp('输入的成绩不合理')

end

3.

x=input('请输入工号');

y=input('请输入该员工工时数');

if y>120

    gongzi=120*84+(y-120)*84*(1+0.15)

elseif y<60

    gongzi=y*84-700;

else

    gongzi=y*84;

end

if gongzi<0

    gongzi=0;

end

disp('应发的工资是')

gongzhi

4.

(1)

x=floor(rand(2,1)*89)+10;

sign=input('请输入标点符号:');

x=int2str(x);

expression=strcat(x(1),sign, x(2))

eval(expression)

(2)

x=floor(rand(2,1)*89)+10;

sign=input('请输入标点符号:');

switch sign

       case {'+'}

              result=x(1)+x(2);

       case {'-'}

              result=x(1)-x(2);

    case {'*'}

        result=x(1)*x(2);

    case {'/'}

        result=x(1)/x(2);

    otherwise

        disp('输入错误')

end

disp([num2str(x(1)) sign num2str(x(2)),'的结果是',num2str(result)])

5.

A=rand(5,6)

n=input('please enter number n')

if (n>size(A,1))

n=size(A,1)

disp('n larger than the row of matrix A')

end

B=A(n,:)

六、实验小结

通过这次试验我掌握了建立和执行M文件的方法;掌握了利用if语句实现选择结构的方法;掌握了利用switch语句实现多分支选择结构的方法和try语句的使用。

实验四:循环结构程序设计

日期:  20## 318

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

实验目的

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

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

3.熟悉利用向量运算来代替循环操作的方法。

二、实验环境

  MATLAB6.5开发平台

三、实验内容

1.根据=+++…+,求的近似值。当n分别取100、1000、10 000时,结果是多少?(要求:分别用循环结构和向量运算(使用sum函数)来实现。)

2.根据y=1+++…+,求:

(1)y<3时的最大n值。(2)与(1)对应的y值。

4.已知  

           

求f~f中:

(1)最大值、最小值、各数之和。(2)正数、零、负数的个数

四、实验的程序代码

1.

(1)

for n=[100,1000,10000]

    sum=0;

    for x=1:n

        sum=sum+1/(x.^2);

    end

    value=sqrt(6*sum)

end  

value =

    3.1321

value =

    3.1406

value =

    3.1415  

(2)

for n=[100,1000,10000]

    x=1:n;

    value=sqrt(6*sum(1./x./x))

end  

2.

y=0;

n=1;

while y<3 

    y=y+1/(2*n-1);

    n=n+1;

end

y=y-1/(n-1)

n=n-1

y =

    2.9946

n =

   113  

4.

f1=1;

f2=0;

f3=1;

f=[f1,f2,f3];

for n=4:100

    f4=f3-2*f2+f1;

    f=[f f4];

    f1=f2;

    f2=f3;

    f3=f4; 

end

f

maxvalue=max(f);

minvalue=min(f);

sumvalue=sum(f);

disp(['最大值是:',num2str(maxvalue)])

disp(['最小值是:',num2str(minvalue)])

disp(['各数和是:',num2str(sumvalue)])

zhengshu=length(find(f>0))

fushu=length(find(f<0))

zeroshu=length(find(f==0))

五、实验小结

通过这次实验我掌握了利用for和while语句来实现循环结构的方法并且熟悉了利用向量运算来代替循环操作的方法,熟悉了for语句实现循环结构的方法以及利用while语句实现循环结构的方法,还有利用向量运算来代替循环操作的方法。

实验五:函数文件

日期:  20## 323

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

一、实验目的

1.理解函数文件的概念。

2.掌握定义和调用MATLAB函数的方法。

二、实验环境

  MATLAB6.5开发平台

三、实验内容

1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。

2.一个物理系统可用下列方程组来表示:

             =

从键盘收入m、m的值,求a、a、N和N的值。其中g取9.8,输入时以角度为单位。(要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。

3.一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称是绝对素数。例如13是绝对素数。试求所有俩位绝对素数。(要求:定义一个判断素数的函数文件。)

四、实验的程序代码

1.       函数文件如下:

function [expval,logval,sinval,cosval]=fushu(x) 

%FUSHU compute fushu value 

expval=exp(x); 

logval=log(x); 

sinval=sin(x); 

cosval=cos(x); 

disp(['复数e的指数是:',num2str(expval)]) 

disp(['复数e的对数是:',num2str(logval)]) 

disp(['复数e的正弦是:',num2str(sinval)]) 

disp(['复数e的余弦是:',num2str(cosval)]) 

命令文件diaoyongfushu.m

 x=1+2i

[expval,logval,sinval,cosval]=fushu(x)

2.

function J=jiefangcheng(m1,m2,m3)

H=[m1*cos(m3*pi/180) -m1 -sin(m3*pi/180) 0

m1*sin(m3*pi/180) 0 cos(m3*pi/180) 0

0 m2 -sin(m3*pi/180) 0

0 0 -cos(m3*pi/180) 1];

K=[0;m1*9.8;0;m2*9.8];

J=inv(H)*K;

disp(['方程组的解是:',num2str(J')])

主程序:

m1=input('m1=');

m2=input('m2=');

m3=input('m3=');

J=jiefangcheng(m1,m2,m3);

3.

function a=sushu(b)

%juedui sushu

x=fix(b/10);

y=rem(b,10);

a=10*y+x;

signab=0;

a2=floor(a/2);

b2=floor(b/2);

for m=2:b2

    if rem(b,m)==0

        signab=signab+1;

    end

end

for n=2:a2

    if rem(a,n)==0

        signab=signab+1;

    end

end

if signab==0

    a=b;

else

    a=0; %这里赋值0,表示不是素数

end

命令文件

liangweisushu=[];

for n=10:99

    [a]=sushu(n);

    if a>0

        liangweisushu=[liangweisushu,a];

    end

end

disp(['所有的两位绝对素数是:',num2str(liangweisushu)])

五、实验小结

通过这次实验我掌握了函数文件的概念以及定义和调用MATLAB函数的方法

在实验过程中我发现了自己存在的问题以及自己在哪些地方不熟悉的需要加强,实验可以发现一些平时没有的知识,找到哪些地方需要巩固。

多上机。多学些实践操作的知识。

实验六:高层绘图操作

日期:  20## 320

评分:_________            批阅教师签字:________

班级:自动化1001

姓名:韩永龙      学号:100610106

一、实验目的

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

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

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

二、实验环境

   MATLAB6.5开发平台

三、实验内容

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

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

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

(2)以子图形式绘制三条曲线。

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

3.已知 

y=   在-5x5区间绘制函数曲线。

4.绘制极坐标曲线=asin(b+n),并分析参数a、b、n对曲线形状的影响。

四、实验的程序代码

1.

x=linspace(0,2*pi,101)

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

plot(x,y)

2.

(1)

clear all

x=linspace(-2*pi,2*pi,500);

y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

plot(x,y1,'r:',x,y2,'b-',x,y3,'k.-')

(2)

clear all

x=linspace(-2*pi,2*pi,500);

y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

subplot(3,1,1);

plot(x,y1);

subplot(3,1,2);

plot(x,y2);

subplot(3,1,3);

plot(x,y3);

3.

x=-5:0.01:5

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

plot(x,y)

4.

clear all

a=input('请输入一个数a:');

b=input('请输入一个数b:');

n=input('请输入一个数n:');

theta=linspace(0,2*pi,500);

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

polar(theta,rho);

五、实验小结

通过这次实验我掌握了绘制二维图形的常用函数和

绘制三维图形的常用函数以及绘制图形的辅助操作。

更多相关推荐:
STM32实验报告

嵌入式系统课程设计实验报告题目:基于STM32的LCD数字钟显示姓名:**学号:****专业年级:12电科指导教师:20**年6月30日1.实验名称:基于STM32的LCD数字钟显示2.实验目的与要求:(1)掌…

STM32实验报告

实验一搭建实验环境一实验简介搭建嵌入式系统开发环境建立第一个工程流水灯实验二实验目的掌握STM32开发环境掌握从无到有的构建工程三实验内容熟悉MDKKEIL开发环境构建基于固件库的工程编写代码实现流水灯工程通过...

STM32实验报告封面

河南机电高等专科学校嵌入式系统开发课程实验报告系部电子通信工程系班级姓名学号

STM32开发环境建立实验报告

实验1STM32开发环境建立一实验目的1掌握嵌入式开发环境的搭建2熟悉MINISTM32开发板的基本使用二实验内容1检查MINISTM32开发板的完整性1ALIENTEKMINISTM32开发板底板一个2ALI...

STM32 ADC电压测试实验报告

STM32ADC电压测试实验报告一实验目的1了解STM32的基本工作原理2通过实践来加深对ARM芯片级程序开发的理解3利用STM32的ADC1通道0来采样外部电压值值并在TFTLCD模块上显示出来二实验原理ST...

STM32处理器基本接口实验报告

STM32处理器基本接口应用实验一MDK集成开发环境练习一实验要求了解MDK集成开发环境的使用方法二实验内容1建立一个新的工程2建立一个C源文件并添加到工程中3设置编译连接控制选项4编译连接工程三实验步骤四实验...

stm32实验

实验一GPIO控制LED一实验目的学习使用ARM开发实验箱STM32的LED部分电路掌握GPIO的配置编程方法以及熟悉IAR软件开发环境二实验内容通过对CPUGPIO的配置实现对LED灯的控制三实验预备知识1I...

307_Multisim实验报告

物理与电子科学学院电路设计与仿真实验姓名班级学号实验课题基于Multisim120实验报告307物电1203班20xx1120xx307简单的定理论证实验一实验目的1深化学习Multisim的使用方法2学习电路...

Multisim模拟电路仿真实验报告

Multisim模拟电路仿真实验20xx010687热动13付道鹏1实验目的1学习用Multisim实现电路仿真分析的主要步骤2用仿真手段对电路性能作较深入的研究2实验内容实验191基本单管放大电路的仿真研究2...

电子仿真技术multisim电路仿真实验报告

成都理工大学计算机辅助电路分析课程设计题目名称:利用multisim分析图所示电路学院名称:地球物理学院所属专业:勘查技术与工程学生姓名:学号:班级:勘查三班一、目的利用multisim分析图所示电路中、和晶体…

multisim实验报告

成都理工大学电子设计仿真与虚拟实验课程设计报告题目名称:(1)数字电路仿真实验(2)仪器放大器设计(3)逻辑电平测试器设计(4)场效应管放大电路设计学院名称:核技术与自动化工程学院所属专业:电气工程及其自动化学…

Multisim10.0电子电路计算机仿真

Multisim100电子电路计算机仿真一实验目的1熟悉并掌握Mulitisim100的仿真过程2了解Mulitisim100的操作流程并掌握其基本操作3学会使用Mnlitisim100绘制电路图熟悉其基本界面...

stm32实验报告(7篇)