MATLAB实验报告

更新时间:2023-12-03 11:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一MATLAB环境的熟悉与基本运算

一、实验目的及要求

1.熟悉MATLAB的开发环境; 2.掌握MATLAB的一些常用命令;

3.掌握矩阵、变量、表达式的输入方法及各种基本运算。

二、实验内容

1.熟悉MATLAB的开发环境: ①MATLAB的各种窗口:

命令窗口、命令历史窗口、工作空间窗口、当前路径窗口。

②路径的设置:

? 建立自己的文件夹,加入到MATLAB路径中,并保存。 ? 设置当前路径,以方便文件管理。 2.学习使用clc、clear,了解其功能和作用。 3.矩阵运算:

已知:A=[1 2;3 4]; B=[5 5;7 8]; 求:A*B、A.*B,并比较结果。 4.使用冒号选出指定元素:

已知:A=[1 2 3;4 5 6;7 8 9]; 求:A中第3列前2个元素;A中所有列第2,3行的元素; 5.在MATLAB的命令窗口计算: 1)sin(2?)

2) (89?55?0.4)?4.5 6.关系及逻辑运算

1)已知:a=[5:1:15]; b=[1 2 8 8 7 10 12 11 13 14 15],求: y=a==b,并分析结果 2)已知:X=[0 1;1 0]; Y=[0 0;1 0],求: x&y+x>y,并分析结果 7.文件操作

1)将0到1000的所有整数,写入到D盘下的data.txt文件 2)读入D盘下的data.txt文件,并赋给变量num 8.符号运算

1)对表达式f=x3-1 进行因式分解

2)对表达式f=(2x2*(x+3)-10)*t,分别将自变量x和t的同类项合并 3)求

x?(1?z)3dz

三、实验报告要求

完成实验内容的3、4、5、6、7、8,写出相应的程序、结果

第1页共17页

实验二MATLAB 语言的程序设计

一、实验目的

1、熟悉 MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉变量传递和赋值

二、实验内容

1.编写程序,计算1+3+5+7+…+(2n+1)的值(用input语句输入n 值)。

0?x?1?x2.编写分段函数f(x)??2?x1?x?2的函数文件,存放于文件ff.m中,并求

??0?其它f(?3),f(2),f(?)的值。

3.用 for 循环语句实现编写一个求n 阶乘的函数文件 1、函数文件设计:

设计一个函数文件实现一个阶乘运算y(n)?n!?1?2?3???(n?1)?n, 为保证函数的通用性,当输入负数或小数时,显示出错提示: 并设计程序调用该函数。

disp('Input parameter must be a positive integer!')

提示:fix(x) 对零方向取整数 ceil(x) 对+?方向取整数 round(x) 四舍五入取整数

4.找到一个 n!> 10100 的值(利用上题的n阶乘函数文件)

5.已知一维数组 A = [2,4,5,8,10]、B =[4,9,6,7,4],用for 循环语句实现

?ABii?1nn?i?1,求和函数可用

sum()

6.编写验证魔方矩阵的函数文件,输出要求如下: (1)如果输入矩阵的维数小于3,输出显示’error’

(2)如果输入矩阵的不是方阵,输出显示’the size of matrix X mustbe N-by-N matrix’

(3)显示行、列和及其对角线求和后的值,并判断其和是否相同。若不同,显示‘No’,相同显示‘Yes’。

三、实验报告要求

在M 文件编辑器中,编写程序代码并调试

第2页共17页

实验三MATLAB 的图形绘制

一、实验目的及要求:

1.掌握MATLAB 绘图的基本方法,熟悉各种绘图函数的使用; 2.掌握图形的修饰方法和标注方法; 3.了解MATLAB 中图形窗口的操作。

二、实验内容:

x=[-2π,2π],y1=sinx、y2=cosx、y3=sin2x、y4=cos 2x

①用MATLAB语言分四个区域分别绘制的曲线,并且对图形标题及横纵坐标轴进行标注(如下

图所示)。

图2 四分区绘制曲线

②另建一个窗口,不分区,用不同颜色、线型绘出四条曲线,并标注图例注解。

图3 同一窗口绘制多条曲线

?x?sin(t)?(0?t?20?) ③绘制三维曲线:?y?cos(t)?z?tsint()cost()?三、实验报告要求:

写出相应的的程序及上机结果。

第3页共17页

实验四控制系统的模型及其转换

一、实验目的及要求

1、掌握建立控制系统模型的函数及方法;

2、掌握控制系统模型间的转换方法及相关函数; 3、熟悉控制系统模型的连接方法; 4、掌握典型系统模型的生成方法。

二、实验内容

1、已知两个传递函数分别为:G(x)?1

12

,G2(x)?23s?13s?s①在MATLAB中分别用传递函数、零极点表示;

②在MATLAB中分别求出通过反馈、串联、并联后得到的系统模型; 2、系统的模型为

4(s?2)(s2?6s?6) G(s)?s(s?1)3(s3?3s2?2s?5)试建立系统的传递函数模型。 3、已知单输入双输出系统的零极点模型

?3(s?12)??4(s?5)(s?3)??G(s)??(s?3)(s?4)(s?5)

建立系统的零极点模型。 4. 控制系统模型的转换

4.1 将2的模型转换为零极点模型 4.2 将3的模型转换为传递函数模型

三、实验报告要求

写出程序及上机的结果。

实验五 SIMULINK基本操作

一、实验目的

学会SIMULINK仿真基本操作 二、实验内容

1、打开Simulink Library Browser窗口,练习功能模块的基本操作。

2、通过示波器观察1MHz,幅度为15mV 的正弦波和100KHz,幅度为5mV 的正弦波相乘的结果。写 出数学表达式。通过使用三踪示波器同时观察1MHz、100KHz 正弦波以及相乘的结果。注意设置仿真参 数和示波器的扫描参数和幅度显示参数。 3、系统开环传递函数

25,求系统单位负反馈闭环单位阶跃响应曲线。

s(s?5)4、学习构建SIMULINK 子系统。构建一个子系统,使得它具有将输入信号m(t)(如一个100Hz 的 正弦波)和一个常数C 相加后再和一个1000Hz 的幅度为A 的正弦波相乘的功能:y(t)=A(m(t)+C) sin (2*pi*f*t) ,其中f=1000 Hz。保存为s23.mdl。用sim 指令在命令空间启动模型进行仿真:在Matlab 命令空间中用语 句对参数A, C, f进行设置,并对采用命令open 打开,采用sim 指令进行仿真。请给出指令语句。

三、实验报告要求

写出程序及上机的结果。

1

实验六控制系统的时域分析

一、 实验目的

利用MATLAB进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、 实验内容 (一) 稳定性

1. 系统传函为G?s??3s4?2s3?5s2?4s?6s?3s?4s?2s?7s?25432,试判断其稳定性。

s2?2s?22. 用Matlab求出G(s)?4的极点,判断稳定性。

s?7s3?3s2?5s?2(二)阶跃响应

2?n典型二阶系统:G(s)?2 2s?2??ns??n要求:

1)在Matlab环境下,编程绘制出当Wn=6,??0.1,0.2,0.3,.04,1.2时,二阶系统的单位阶跃响应曲线并分析?的变化对控制系统输出的影响;

2)在Matlab环境下,编程绘制出??0.7,Wn=2、4、6、8、10、12时,系统的单位阶跃响应曲线并说明Wn的变化对系统输出有何影响。 (三)系统动态特性分析

3.1用编程方式求二阶系统G(s)?120阶跃响应的峰值时间tp,上升时间tr,调整时间

s2?12s?120ts,超调量?%。

3.2 (1)在Simulink集成环境下建立模型,在给定信号作用点处输入单位给定阶跃响应信号,0.3秒后在扰动信号点输入单位阶跃响应信号。并绘制相应的响应曲线。

(2)计算仿真结果的超调量、上升时间、峰值时间、稳态误差。

2

三、 实验报告要求: 1)完成上述各题

2)分析零极点对系统性能的影响

3)分析阻尼比?、振荡频率Wn对系统阶跃响应的影响

实验七控制系统的频域分析

一、实验目的

1. 利用计算机作出开环系统的波特图 2. 观察记录控制系统的开环频率特性 3. 控制系统的开环频率特性分析 二、实验内容:

1、绘制典型二阶系统的Bode图

2?nG(s)?22s?2??ns??n

要求:

在Matlab环境下,以?为参变量,编程绘制该系统的对数频率特性曲线(Bode图),并从Bode图中找出二阶系统由于?的变化对其Bode图有何影响?图形有哪些变化?图形与?的对应关系(在图中对应的标注出来) 2、某控制系统的开环传递函数为

G(s)H(s)?90(s?5)

s(s?0.6)(s?10)(s?60)要求:

在Matlab环境下,编程绘制该系统的开环Bode图,并通过Bode 图判断该闭环系统的稳定性。若闭环系统稳定,则从图中求出系统的幅值裕度Kg、相位裕度? 3、某控制系统的开环传递函数为:

3

G(s)H(s)?42

(s?6)(s?3)要求:

1)绘制开环系统的nyquist图,并判断闭环系统的稳定性;求出系统的单位冲激响应;

2) 若给系统增加一个s=1的开环极点(p=2), 绘制此时的nyquist图,判别此时闭环系统的稳定性;并求出系统的单位冲激响应;

3)若给系统增加一个开环极点p=2的同时再增加一个开环零点z=0, 绘制此时的nyquist图, 判别此时闭环系统的稳定性;并求出系统的单位冲激响应。 三、实验报告要求:

1)完成上述各题

2)分析幅值裕度Kg、相位裕度?的物理意义。

4

实验八控制系统PID 校正器设计法

一、实验目的

1、熟悉常规PID 控制器的设计方法 2、掌握PID 参数的调节规律

3、学习编写程序求系统的动态性能指标

二、相关知识——临界比例度法(边界稳定法)

用系统的等幅振荡曲线来整定控制器的参数。先测出系统处于闭环状态下对象的等幅振荡曲线,根据等幅振荡曲线定出一些能反映控制对象动态特性的参数,具体做法是将比例增益K(或比例度?=1/K)调在比较小的位置上(对应?为比较大位置上),逐渐增大K值(或逐渐减小?),直到出现等幅振荡曲线,此时的比例增益为Km,称为临界比例增益,?m?1/Km 称为临界比例度。从振荡曲线上读出临界周期Tm。根据得到的Km(或?m)、Tm两个参数,利用下表来计算控制器的控制参数。

控制器类型 P PI PID 控制器的控制参数 比例增益Kp 0.5Km 0.45Km 0.6Km 比例度? 2?k 2.2?k 1.7?k 积分时间Ti 微分时间Td 0 0 0.125Tm ? Tm/1.2 0.5Tm 三、实验内容

1、在SIMULINK 窗口建立如下页模型。 2、设计PID控制器,传递函数模型如下

Gc(s)?Kp[1?1?TDs] Tis

3、修改PID参数Kp、Ti、Td,讨论参数对系统的影响

4、利用临界比例度法(即:稳定边界法)对PID参数Kp、Ti、Td校正设计。

参 数 数 值 Km 0.68 Tm 1.991 Kp 0.306 Ti 1.6592 Td

5、根据PID参数Kp、Ti、Td对系统的影响,调节PID参数实现系统的超调量小于10%。

5

Step参数 数值

Kp Ti SubtractTd 6、通过程序求得系统的超调量、上升时间和调节时间(误差带选为5%) Subsystem四、实验报告要求:

写出程序及上机的结果,并对结果进行分析。

Gain178Transfer FcnSubtract1Transfer Fcn1Transfer Fcn20.00167s+144ClockTo Work spacet0.017s+10.075s+111 实验一 MATLAB环境的熟悉与基本运算 一、实验目的及要求 To Work space1ScopeTransfer Fcn31.熟悉MATLAB的开发环境; 2.掌握MATLAB的一些常用命令; 3.掌握矩阵、变量、表达式的输入方法及各种基本运算。 二、实验内容

3.矩阵运算:已知:A=[1 2;3 4]; B=[5 5;7 8]; 求:A*B、A.*B,并比较结果。 程序:A*BA.*B 结果:19 215 10 43 4721 32

6

结果分析:*表示矩阵相乘,而.*表示矩阵的各元素对应相乘 4.使用冒号选出指定元素:

已知:A=[1 2 3;4 5 6;7 8 9]; 求:A中第3列前2个元素;A中所有列第2,3行的元素; 程序:A(1:2,3)A(2:3,:) 结果:34 5 6 67 8 9

5.在MATLAB的命令窗口计算: 1) sin(2?)

2) (89?55?0.4)?4.5

程序:f=sin(2*pi) (89^(1/2)+55*0.4)/4.5 结果:f = -2.4493e-016ans = 6.9853 6.关系及逻辑运算

1)已知:a=[5:1:15]; b=[1 2 8 8 7 10 12 11 13 14 15],求: y=a==b,并分析结果程序:y=a==b

结果:y = 0 0 0 1 0 1 0 0 1 1 结果分析:

2)已知:X=[0 1;1 0]; Y=[0 0;1 0],求:x&y+x>y,并分析结果 程序:X&Y+X>Y 结果:0 1

1 0 结果分析: 7.文件操作

1)将0到1000的所有整数,写入到D盘下的data.txt文件

程序:x=[0:1:1000]

结果:save data.txt x -ascii –double

2)读入D盘下的data.txt文件,并赋给变量num 程序:num=load(‘data.txt’) 8.符号运算

1)对表达式f=x3-1 进行因式分解 程序:syms x f=x^3-1 factor(f)

结果:ans =(x - 1)*(x^2 + x + 1)

2)对表达式f=(2x2*(x+3)-10)*t,分别将自变量x和t的同类项合并 程序:syms x t

>> f=(2*(x^2)*(x+3)-10)*t;

7

1 >>collect(f,x) >> collect(f,t)

结果:ans =2*t*x^3 + 6*t*x^2 - 10*t ans =(2*x^2*(x + 3) - 10)*t

x?(1?z)3dz3)求

程序:syms x z >> f=x/(1+z)^3; >> int1=int(f,z)

结果:int1 =-x/(2*(z + 1)^2)

实验二 MATLAB 语言的程序设计

一、实验目的

1、熟悉 MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉变量传递和赋值

二、实验内容

1.编写程序,计算1+3+5+7+…+(2n+1)的值(用input语句输入n 值)。 程序:function [s] = WFSSY21(x,n)

%UNTITLED2 Summary of this function goes here % Detailed explanation goes here n=input('please input n:'); s=0

for n=0:1:n x=2*n+1; s=s+x;

end

结果:please input n:5

s =36

0?x?1?x?f(x)??2?x1?x?2?0其它?2.编写分段函数的函数文件,存放于文件ff.m中,并求 f(?3),f(2),f(?)的值。

程序:function [ y] =WFSSY22( x )

%UNTITLED5 Summary of this function goes here % Detailed explanation goes here

8

x=input('please input x:'); y=0; if x<0 y=0; elseif x<1 y=x; elseif x<=2 y=2-x; else y=0 end

结果:please input x:-3

ans =0

please input x:2^(1/2) ans =0.5858

please input x:inf y=0

ans = 0

3.用 for 循环语句实现编写一个求n 阶乘的函数文件 1、函数文件设计:

设计一个函数文件实现一个阶乘运算y(n)?n!?1?2?3???(n?1)?n,

并设计程序调用该函数。

为保证函数的通用性,当输入负数或小数时,显示出错提示: disp('Input parameter must be a positive integer!') 提示:fix(x) 对零方向取整数 ceil(x) 对+?方向取整数

round(x) 四舍五入取整数 程序:function [y] = WFSSY23(n )

%UNTITLED3 Summary of this function goes here % Detailed explanation goes here x=input('please input x:'); if x<0|(fix(x)~=x)

disp('Input parameter must be a positive integer!');

end y=1; for x=1:1:x y=y*x;

end

结果:please input x:3

ans = 6

9

please input x:4 ans =24

4.找到一个 n!> 10100 的值(利用上题的n阶乘函数文件) 程序:function [y ] = WFSSY24( n )

%UNTITLED4 Summary of this function goes here % Detailed explanation goes here x=input('please input x:'); if x<0|(fix(x)~=x)

disp('Input parameter must be a positive integer!');

end y=1;

for x=1:1:x y=y*x;

end

if y>10^100 y;

else

disp('n!<10^100!');

end

结果:please input x:5

ans =120

please input x:9999 n!>10^100! ans =Inf

5.已知一维数组 A = [2,4,5,8,10]、B =[4,9,6,7,4],用for 循环语句实现和函数可用sum()

程序:function [s,c ] = WFSSY25(i,n )

%UNTITLED2 Summary of this function goes here % Detailed explanation goes here A = [2,4,5,8,10]; B =[4,9,6,7,4];

n=input('please input n:'); fori=1:1:n

c=A(i)*B(n-i+1); end s=sum(c) end

?ABii?1nn?i?1,求

结果:please input n:3

s = 20

6.编写验证魔方矩阵的函数文件,输出要求如下: (1)如果输入矩阵的维数小于3,输出显示’error’

10

(2)如果输入矩阵的不是方阵,输出显示’the size of matrix X mustbe N-by-N matrix’ (3)显示行、列和及其对角线求和后的值,并判断其和是否相同。若不同,显示‘No’,相同显示‘Yes’。

程序: function [ b,m,n,c,d,p,e,f,j,h,i ] = WFSSY26( A ) %UNTITLED3 Summary of this function goes here % Detailed explanation goes here A=input('Enter matrix A=>'); b=ndims(A);

[m,n] = size(A); if b<3

disp('error') ; end if m~=n

disp('the size of matrix X must be N-by-N matrix'); end

c=sum(A,1); d=sum(A,2); p=diag(A);

e=diag(fliplr(A)); f=sum(c)/m; g=sum(d)/n; h=sum(p); i=sum(e); if f==g; if h==i if f==h disp('Yes') else

disp('No') end else

disp('No') end else

disp('No') end

结果:Enter matrix A=>[17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9] error

11

本文来源:https://www.bwwdw.com/article/hdxt.html

Top