当前位置:文档之家› Matlab程序设计实训

Matlab程序设计实训

Matlab程序设计实训
Matlab程序设计实训

实习报告

实习名称Matlab程序设计实训

专业班级****

姓名***

学号***

成绩评定

电气与信息工程学院

和谐勤奋求是创新

实习考核和成绩评定办法

1.实习成绩的考核由指导教师根据实习表现、实习报告、实习成果、现场操作、设计、口试或笔试等几个方面,给出各项权重,综合评定。该实习考核教研室主任审核,主管院长审批备案。

2.成绩评定采用五级分制,即优、良、中、及格、不及格。

3.参加本次实习时间不足三分之二或旷课四天以上者,不得参加本次考核,按不及格处理。

4.实习结束一周内,指导教师提交实习成绩和实习总结。

5.实习过程考核和实习成绩在教师手册中有记载。

实习报告内容

实习报告内容、格式各专业根据实习类别(技能实习、认识实习、生产实习、毕业实习等)统一规范,经教研室主任审核、主管院长审批备案。

注:1. 实习任务书和实习指导书在实习前发给学生,实习任务书放置在实习报告封面后和正文目录前。

2. 为了节省纸张,保护环境,便于保管实习报告,统一采用A4纸,实习报告建议双面打印(正文采

用宋体五号字)或手写,右侧装订。

2016/2017学年第二学期

《Matlab程序设计实训》计划

指导教师:****** 班级:自动化1541、2班

实习地点:1教8楼机房

一、实习目的

实习的目的:了解并掌握MATLAB软件的各种应用开发环境;了解并掌握MATLAB软件强大的科学运算功能;了解并掌握利用MATLAB语言程序设计流程进行程序设计的方法;了解并掌握MATLAB的图形处理功能;了解MATLAB软件的交互式仿真功能;了解并掌握MATLAB软件在控制系统建模、分析以及设计中的应用。

实习的任务:通过实习可以使学生将MATLAB软件与控制系统理论及仿真相结合,加深对控制系统理论知识的理解,验证理论知识的正确性,提高软件的实际操作能力,可以有效地培养学生分析及解决实际问题的能力,不断提高自学能力,养成良好的科学态度以及实事求是、严谨踏实的学习风气,成为真正的应用型本科人才。通过实训达到边学边练、理论与实际操作相结合的学习目的。

二、实习内容

掌握MATLAB编程环境、基础知识;掌握矩阵生成及运算、数组运算;矩阵函数;掌握常用绘图命令及方法;掌握基本图形处理、二维图形处理方法;掌握可视化M文件程序设计及调试;掌握Simulink仿真工具的建立和基本仿真方法。

了解并掌握基于MATLAB的控制系统数学模型及分析方法;了解并掌握基于MATLAB的控制系统PID控制器的基本设计方法。综合应用MATLAB程序设计语言,根据设计任务要求,完成软件程序的编制并调试运行。

四、实习要求

实习期间,严格遵守课堂纪律,不许迟到、早退;实习期间,学习态度端正,认真上机练习;熟练掌握MATLAB软件的应用方法;完成实习报告一份,内容充实,写出实习的体会与收获;实习报告打印成文。

目录

1实习目的和意义 ................................................................................ 错误!未定义书签。

2 MATALAB/Simulink简介................................................................ 错误!未定义书签。

2.1 MATALAB的发展历程 ............................................................ 错误!未定义书签。

2.2 MATALAB的影响 .................................................................... 错误!未定义书签。

2.3 MATALAB与控制系统仿真 .................................................... 错误!未定义书签。

2.4 Simulink简介 (2)

3 MATALAB语言基础 (2)

3.1 MATALAB基础知识 (3)

4 Simulink仿真工具 (8)

4.1 运行simulik演示程序 (9)

4.2 Simulink模型的建立 (10)

5 控制系统数学模型 (10)

5.1 动态过程微分方程描述 (10)

5.2 高阶系统的时域分析 (11)

6 控制系统分析 (12)

6.1 时域分析 (12)

6.2 频域分析 (15)

7 控制器设计 (15)

7.1 比例控制器 (15)

7.2 积分控制器 (16)

7.3 比例积分控制器 (17)

7.4 比例微分控制器 (18)

7.5 比例积分微分控制器 (18)

8上机考试 (18)

9实习总结 (20)

1 实习目的和意义

随着电子工业的飞速发展和电子计算机技术的广泛应用,促使电子设计自动化技术日新月异,社会对电气信息类人才的需求也日益迫切、要求也更加严格。本次MATLAB实习旨在让学生们熟悉MATLAB语言的使用、了解MA TLAB在电子信息课程中的应用、掌握MATLAB矩阵输入、运算以及MATLAB数值的运算功能、掌握各种数据的创建、访问、扩建及缩减、了解利用MA TLAB计算系统响应的方法;验证信号与系统的基本概念、基本理论,掌握信号与系统的分析方法、了解MA TLAB软件的基本功能及实际操作方法,熟悉利用MA TLAB编写简单的程序,解决一般性的问题,提高学生实际仿真控制和动手操作的综合能力,使学生在完成设计能力基础上,提升计算机使用能力,培养学生的综合设计以及仿真控制能力,为学生今后的学习和工作打下良好的基础。

2 MATALAB/Simulink简介

2.1 MATALAB的发展历程

MATALAB是MA THWorks公司推出的一个功能强大的计算仿真软件,是目前世界上应用最广泛的计算机仿真软件。它最早出现于1980年,美国新墨西哥大学计算机科学系主任CLEVE Moler教授采用Fortran语言编写了集命令翻译、科学计算于一身的一套交互式软件系统,设计初衷是为了方便学生解决“线性代数”课程的矩阵运算问题。这个软件系统被命名为MA TALAB,是matrix laboratory的缩写,译为“矩阵实验”,表明其基本操作单元是矩阵。这就是最初的MATALAB。

2.2 MATALAB的影响

在欧美各高等院校,MATALAB已经被正式列入研究生和本科生教学计划,成为线性代数、数值分析、数理统计、自动控制理论、数字信号处理、动态系统仿真、图像处理等课程的基本教学工具,是大学生必须掌握的基本技能之一。

2.3 MATALAB与控制系统仿真

(1)强大的运算功能

MATLAB提供了向量、数组、矩阵、复数运算,以及求解高次微分方程、常微分方程的数值积分等强大的运算功能,这些运算功能使控制理论及控制系统中经常遇到的计算问题得以顺利解决。

(2)简单易学的编程语言

MATLAB的编程语言是脚本语言,这种解释性的语言简单易学。MA TLAB命令也与数学中的符号、公式非常接近,可读性强,容易掌握。

(3)大量配套工具箱

MATLAB具有大量与控制系统设计相关的配套工具箱,如控制系统工具箱、系统辨识工具箱、鲁棒控制工具箱、模糊控制工具箱、神经网络工具箱、最优化工具箱、模型预测控制工具箱和多变量频域设计工具箱等。这些工具箱使得控制系统的仿真与计算变得便捷与高效。

(4)强大的图形功能

除了一般的数据显示, MA TLAB还支持多种形式的二维/三维图形显示,丰富的绘图命令可以随时将计算结果可视化,使数据内容清晰可见、一目了然,便于对控制系统的数据处理结果进行分析。

(5)高效的编程效率

MATLAB内具有丰富的库函数,从加减乘除、正弦、余弦、积分、微分、方程求解和矩阵求逆,到快速傅里叶变换等一应俱全,而且可以直接调用,不必将其子程序的命令或语句逐一列出,大大提高了编程效率。

2.4 Simulink简介

1990年Math works公司在MA TLAB中加入了新的控制系统模型化图形输入与仿真工具,并命名为SIMULAB。该工具很快在控制工程领域获得了广泛的认可,并在1992年被正式更名为Simulink。

Simulink是MATLAB中用于动态系统建模和仿真的一个软件包,它的出现使得控制系统仿真进入模型化图形组态阶段,控制系统的分析与设计变得更加便捷和直观。Simulink与MATLAB语言相比,区别是其与用户的交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的时间和精力投入到系统模型的构建,而非语言的编程上。

3MATALAB语言基础

(1)语言简洁紧凑,运算符和库函数极其丰富,使用方便灵活,编程效率高, MA TLAB除了提供和C语言一样的运算符号外,还提供了大量的矩阵和向量运算符,灵活使用MATLAB的运算符可使程序变得极为简短。MA TLAB程序书写形式自由,利用丰富的库函数避开了繁杂的子程序编程任务,压缩了一切不必要的编程工作。

(2)具有结构化的控制语句,如for循环、while循环、break语句、if语句和switch语句等,同时又有面向对象的编程特性。

(3)图形功能强大。具有对二维和三维数据可视化、图像处理、动画制作等绘图命令,也包括可以修改图形及编制完整图形界面的绘图命令。

(4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工

具箱主要用来扩充其符号计算、图示建模仿真、文字处理以及与硬件实时交互等功能,可用于多种学科;学科性工具箱专业性比较强,包括优化工具箱、统计工具箱、控制工具箱、小波工具箱、图像处理工具箱、通信工具箱等。

(5)源程序的开放性。除内部函数外,所有MA TLAB的核心文件和工具箱文件都是可读可改的源文件,用户可修改源文件和加入自己的文件,它们可以与库函数一样被调用。

3.1 MATALAB基础知识

MATALAB数据类型主要包括:数字、字符串、矩阵、单元型数据及结构数据等。

3.1.1 变量与常量

与常规的程序设计语言不同, MATLAB语言中的变量既不需要事先定义,也不需要预先指定变量类型, MATLAB会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中,如果赋值变量已存在时, MA TLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。

3.1.2 字符串

字符是MATLAB中符号运算的基本构成单元,也是文字等表达方式的基本元素。字符串用单撤号进行输入或赋值,也可以用函数char ()来生成。字符串的每个字符(包括空格)都是字符数组的一个元素。

3.1.3 矩阵生成

在MA TLAB中,矩阵的输入必须以方括号“[]”作为其开始与结束标志,矩阵的行与行之间要用分号“;”或按回车键分开,矩阵的元素之间要用逗号“,”或用空格分隔。矩阵的大小可以不必预先定义,且矩阵元素的值可以用表达式表示。建立矩阵的方法有直接输入矩阵元素、现有矩阵基础上添删元素、读取数据文件、直接建立特殊矩阵等。

3.1.4 矩阵的运算

矩阵的加、减运算符分别为“+,-”,只有维数相同的矩阵才可以进行加、减运算。两个矩阵的加减运算是对应元素的加减,而矩阵与标量的加减运算则是矩阵中的每一个元素都与该标量进行加减运算。

矩阵的乘法运算符为“*”,只有当两个矩阵中前一个矩阵的列数和后一个矩阵的行数相同时,才可以进行乘法运算。标量与矩阵的乘法运算是标量与矩阵中的每一个元素进行相乘的运算。

矩阵的除法有两种形式:左除“\”和右除“/”。对于矩阵A和B,如果A矩阵是非奇异方阵,A\B是A的逆矩阵乘B,即inv(A)*B.A\B运算等效于求A*x=B的解;而B/A是B乘A的逆矩阵,即B*inv(A),B/A等效于求x*A=B的解,右除B/A也可由B/A=(A’\B’)’左除来实现。如果A是奇异矩阵系统将给出警告信息。

矩阵的幂运算符为“^”,A^P意思是A的P次方。如果A是一个方阵,P是一个大于1的整数,则A^P表示A的P次幂,即A自乘P次。如果P不是整数,则矩阵的乘方是计算矩阵A 的各特征值和特征向量的乘方。如果B是方阵,a是标量,a^B就是一个按特征值与特征向量的升幂排列的B次方程阵。如果a和B都是矩阵,则a^B是错误的。

3.1.5 用ploy创建多项式

>>A=[1 2 3;3 4 5;5 6 7]

A=

1 2 3

3 4 5

5 6 7

>>P=ploy(A)

>>ezplot(ppa,[-50,50])

运行结果如下

图3-1

3.1.6 多项式的曲线拟合

>>x=[0 3.3 4 5 6 64 7 7.4 8 8.6 9 10]

>>y=[6.016 5.608 5.359 5.360 5.470 5.420 5.350 5.338 5.260 5.205 5.110 5.000];

>>n=3

>>p=ployfit(x,y,n);

>>xi=linspace(0, 10 ,1000)

>>z=ployval(p,xi);

>>plot(x,y,’b’,x,y,’r’,xi,z,’:g’)

运行结果如下

图3-2

(1)单曲线

语句格式plot(x,y):其中x和y为长度相同的向量,分别为储存X坐标和Y坐标数据。

>>y=[0,0.48,0.84,1,0.91,0.6,0.14];

>>plot(y)

生成图3-3所示的折线图

>>x=linspace(0,2*pi,30);

>>y=sin(x);

>>plot(x,y)

生成图形如图3-4所示

图3-3

图3-4

(2)多重线

在同一个画面上可以画出许多曲线,语句格式为plot(x1,y1,x2,y2,…,xn,yn)。

>>t=0:pi/100:6;

>>y=sin(t);

>>y1=sin(t+0.25);

>>y2=sin(t+0.5);

>>plot(t,y,t,y1,t,y2)

得到图形如图3-5所示

另一种方法是利用hold命令,在已经画好的图形上,若设置hold on,MATLAB将把新的plot命令产生的图形画在原来的图形上。而命令hold off将结束这个过程。

>>t=0:pi/100:6;y=sin(t);plot(x,y)

>>hold on

>>y1=sin(t+0.25);plot(t,y1)

>>y2=sin(t+0.5);plot(t,y2)

>>hold off

得到的图形如图3-6所示

图3-5图3-6

(3)三维曲面图

与三维网线图的区别是网线图的线条有颜色,空挡是黑色的,而曲面图的线条是黑色的,空挡是有颜色的。具体图形如图3-7所示。

图3-7

4 Simulink仿真工具

在工程实际中,控制系统的结构往往很复杂,如果不借助专用的系统建模软件,则很难准确地把一个控制系统的复杂模型输入计算机,对其进行进一步的分析与仿真。

4.1 运行simulik演示程序

图4-1

如图所示为直流无刷电机转速的PI控制系统模型,其中标注为Vdc、Vab、Te等的模块实际上实现的就是示波器的功能,双击该模块,即可以打开示波器观测相应的数据。在进行仿真之前,首先设置仿真参数,图4-1所示的仿真采用原模型默认的参数。选择菜单栏Simulation 下的start命令,或者单击Simulink工具栏上的开始按钮p,系统开始按照模型中设置的参数

进行仿真,仿真结果:电压、电流和转矩等曲线将显示在示波器中。若要停止仿真,可选择Simulation菜单栏下的sop命令,或者单击Simulink工具栏上的停止按钮照仿真结束后,可选择file菜单栏下的close命令关闭模型,或者单击窗口右上角的区来关闭当前窗口。

4.1 Simulink模型的建立

4.1.1 模型窗口

由于simulink是基于matlab环境之上的高性能的系统级仿真设计平台,因此启动simulink之前必须首先运行matlab,然后才能启动simulink并建立系统系统模型。

①在 MATLAB的命令窗口中选择File→New→ New model菜单项。

②单击 Simulink工具栏中的“新建模型”图标。

③选中 Simulink菜单系统中的File→New→ Model菜单项

④还可以使用 new - system命令来建立新模型。

4.1.2 模型举例

图4-2图4-3

图4-4

4.2 Simulink的仿真方法

建立好了Simulink模型后就可以启动仿真过程了。最简单的方法当然是按Simulink工具栏下的【启动仿真】按钮了。启动仿真过程后将以默认参数为基础进行仿真,而用户还可

以自己设置出需要的控制参数,打开Simulation→ Simulation parameters菜单项,用户可以从

中填写相应的数据,控制仿真过程。在对话框中有5个标签,默认的标签为微分方程求解程序Solver的设置,在该标签下的对话框主要接受微分方程求解的算法的选择及仿真控制参数的

设置。

设置仿真参数和选择解法器,选择 Simulation菜单下的 Parameters命令,就会弹出一个仿

真参数对话框,它主要用三个页面来管理仿真的参数。

(1)Solver页:它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择

一些输出选项。

(2)WorkspaceI/O页:其作用是管理模型从MATLAB工作空间的输入和对它的输出。

(3) Diagnostics页:允许用户选择Simulink在仿真中显示的警告信息的等级。

仿真结果可以用数据的形式保存在文件中,也可以用图形的方式直观地显示出来,查看和分析结果曲线对于了解模型的内部结构,以及判断结果的准确性具有重要意义。采用以下方

法可绘制模型的输出轨迹。

(1)利用示波器模块( Scope)得到输出结果。

(2)利用输出接口模块(Out)得到输出结果。

(3)通过将数据传送到工作空间模块(TO Workspace)得到输出结果。

5 控制系统数学模型

通常,实际控制系统的动态性能和稳态性能是无法进行准确的分析。只有对实际系统的

各个组成部分进行数学建模,通过对实际控制系统的数学抽象,将其内部变量间的关系表示出来,才能对系统进行仿真与计算,并将仿真分析的结果用以设计系统并优化控制器,使系统的

性能指标符合实际控制系统的预期设计需要。控制系统的数学模型分为静态数学模型和动态数学模型。静态数学模型是指描述各阶导数为零的变量间关系的代数方程。动态数学模型是指描述各阶导数不为零的变量间关系的代数方程。线性系统常用的数学模型有传递函数模型、状态方程模型、零极点模型和部分分式模型等。不同的应用需要不同的数学模型,它们之间

存在着内在联系并且可以互相转换。

5.1 动态过程微分方程描述

分析和设计控制系统首先要对实际控制系统进行数学建模,线性定常系统的基础模型即

使微分方程,它是描述事物最基本的工具。 5.1.1 微分方程的形式

线性定常系统或元件的微分方程形式为

=++++---)()()

()(1

1

1

1

0t c a dt t dc a dt t c d

a dt

t c d a n n n n n n

)()()

()(11

1

1

t r b dt

t dr b dt

t r d

b dt

t r d b m m m m m

m

++++---

等式左侧表示输出变量的各阶导数,右侧表示输入变量的各阶导数。通常n≥m,m≥0,n≥1且0

a n

≠,b 0n ≠(a j 及b j 均为实数)。

5.1.2 传递函数定义

线性定常系统在零初始条件下,系统输出量的拉普拉斯变换与输入量拉普拉斯变换之比,称为该系统的传递函数。

定义中的零初始条件有两方面的含义:

(1)输入作用是在t=0时刻后作用于系统,因此输入量及其各阶导数在t=0时的值为零。

(2)输入信号作用于系统之前系统是静止的,即t=0时系统的输出量及各阶导数为零。

根据传递函数的定义,则系统的传递函数为:

)

()()

()()(11

101110s N s M a s a s

a s

a b s b s b s b s R s C s G m

m m m

m m m m =

++++++++==

----

m m m m

b s b s b s b s M ++++=--11

10)( n n n n a s a s

a s

a s N ++++=--11

10)(

)(*)()(s R s G s C =

输入量R (s )经过传递函数G (s )的传递后,得到了输入量C (s ),可以用框图形象直观地表示出这一传递关系,箭头表示信号传递的方向。

5.2 高阶系统的时域分析

通常把三阶以上的系统称为高阶系统。在实际控制系统中,几乎都是由高阶微分方程来描述,即均为高阶系统。对于高阶系统的建模及分析比较困难,通常采用突出主要因素,忽略次要因素的方法,将高阶系统近似为一个二阶系统。

5.2.1 高阶系统的特点

(1)高阶系统的时间响应表达式由简单函数组成。

(2)如果闭环极点都具有负实部,高阶系统则是稳定的。

(3)高阶系统时间响应的类型取决于闭环极点的性质和大小,响应曲线形状与闭环零点

有关。

5.2.2 高阶系统的闭环主导极点

系统输出各动态响应分量衰减快慢取决于对应的闭环极点距离s平面虚轴的远近,其中最靠近虚轴的闭环极点所对应的动态分量衰减得最慢,在所有各分量中起主要作用。如果高阶系统中,所有其他极点的实部比距离虚轴最近的闭环极点的实部大5倍以上,并且在该极点附近不存在闭环零点,则这种离虚轴最近的闭环极点将对系统的动态响应起主导作用,并称其为闭环主导极点主导极点常以共轭复数形式出现,此时可用二阶系统的动态响应指标来估计高阶系统的性能。所以,主导极点具有重要的实用意义。

6 控制系统分析

分析控制系统首先要建立数学模型,其次再应用不同的方法分析控制系统各项性能。在经典控制理论中分析方法有很多种,主要有时域分析法、根轨迹分析法、频域分析法等。不同的分析方法具有各自的优点,它们的适用范围和对象也有所不同。时域分析法主要以拉普拉斯变换为数学工具直接在时间域研究控制系统动态性能和稳态性能的方法。时域分析法的优点是可以形象、直观、准确地得到系统时间响应的全部信息。根轨迹法是一种简便的图解分析方法,尤其对于多回路系统分析更加有效。频域分析法是在正弦信号作用下分析系统性能的图解方法,不仅适用线性定常系统,还可以推广应用于非线性系统。系统的频域特性可以通过分析法和实验法定性与定量地对各项性能进行分析。

6.1 时域分析

时域分析法就是通过求解控制系统的时间响应来分析系统的稳定性、快速性和准确性。这是一种在时间域对系统进行分析的方法,具有形象、直观、准确等特点。尤其适用于对二阶控制系统的各项性能进行分析。但是由于时域分析法计算繁琐,因此对于高阶系统此方法并不适用。

6.1.1 系统传递函数如下:G(s)=10/s4+4s3+18s2+20s+10.试着绘制其阶跃响应曲线。

解:MATLAB程序如下:

num=[10];

den=[1 4 18 20 10];

t=[0:0.1:10];

y=step(num,den,t)

plot(t,y)

xlabel(‘时间t’);ylabel(‘y’);

title(‘单位阶跃响应曲线’);

运行程序,系统单位阶跃响应曲线如图所示。

图6-1

6.1.2 系统传递函数如下:G(s)=36/s2+13s+36.试用MATLAB绘制出单位阶跃响应、单位斜坡响应、单位脉冲响应曲线图。

解:MATLAB程序如下所示:

num=[36];

den=[1 13 36];

t=[0:0.1:10];

u=t;

y=step(num,den,t);

y1=lsim(num,den,u,t);

y2=impulse(num,den,t) plot(t,y,'-',t,y1,'-.',t,y2,':'); xlabe(‘时间t’);ylabe(‘y’)

title(‘单位阶跃、斜坡、脉冲输入响应曲线’);

legend (‘单位阶跃响应曲线’,’单位斜坡响应曲线’,’单位脉冲响应曲线’)

运行程序,系统的单位阶跃响应曲线、单位斜坡响应曲线、单位脉冲响应曲线如图所示.

图6-2

6.2 频域分析

6.2.1 已知一典型二阶传递函数为:

)2/()(2

22n n n s s s G ω?ωω++=,试分别绘出其Bode 图。 解:MATLAB 程序如下所示: w=[0,logspace(-2,2,200)]; zet=0.7;

wn=[0:0.25:1,1.8,2.5]; hold on

for i=1:length(wn) num=wn(i)^2;

den=[1,2*zet*wn(i),wn(i)^2]; sys=tf(num,den); bode(sys,w);

end

Bode图如图所示。

图6-3 6.2.2 绘制出奈特图,具体程序如下:

G=tf(100,conv([1 4 1],[1 6]));

Nyquist(g);

绘制的图形如图所示。

图6-4 7 控制器设计

7.1 比例控制器

MATLAB编程作业

《Matlab 编程训练》 作业 专 业 学生姓名 班级 学 号 指导教师 完成日期

实训一 MATLAB 语言介绍和数值计算 1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存变量。 12 2sin851z e =+ . 2. 已知 1234413134787,2033657327A B --???? ????==???? ????-???? ,求下列表达式的值: (1) A+6*B 和A-B+I (其中I 为单位矩阵) A+6*B:

A-B+I: (2)A*B和A.*B A*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] c=A*B 结果: A.*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=A.*B 结果:

(3)A^3和A.^3 A^3程序: A=[12 34 -4;34 7 87;3 65 7] E=A^3 结果: A.^3程序: A=[12 34 -4;34 7 87;3 65 7] C=A.^3 (4)A/B及B\A A/B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] C=A/B 结果:

B\A程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=B\A 结果: (5)将矩阵C=B\A的右下角2*2子矩阵赋给D, 并(3)保存变量(mat文件)程序: A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; C=B*inv(A); D=C(2:3,2:3) 结果:

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

matlab编程训练

matlab训练 建立一个脚本文件,用于两个变量值的互相交换。 x=input('输入变量x='); y=input('输入变量y='); z=x; x=y; y=z; x y 比较从键盘输入的两个数的大小,输出其中较大的数。(扩展,输出两个同型矩阵中对应位置较大的数) function [ y ] = ex2( x ) a=input('输入数字x='); b=input('输入数字y='); if a>b fprintf('较大数为%d\n',a) elseif a

c = input('请输入常数项: '); discriminant = b^2 - 4 * a * c; if discriminant > 0 x1 = (-b + sqrt(discriminant)) / (2*a); x2 = (-b - sqrt(discriminant)) / (2*a); fprintf('x1 = %f\n', x1); fprintf('x2 = %f\n', x2); elseif discriminant == 0 x1 = ( -b ) / (2*a); fprintf('x1 = x2 = %f\n', x1); else real_part = (-b) / (2*a); imag_part = sqrt( abs(discriminant)) / (2*a); disp('此方程无实根:'); fprintf('x1 = %f + i %f \n',real_part, imag_part); fprintf('x1 + %f - i %f \n', real_part, imag_part); end 编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。function ex4 r=input('请输入此圆的半径: '); S=pi*r; C=2*pi*r; fprintf('此圆的面积是:'); disp(S) fprintf('此圆的周长是:');

MATLAB程序设计作业

Matlab程序设计 班级 姓名 学号

《MATLAB程序设计》作业 1、考虑如下x-y 一组实验数据: x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2] 分别绘出plot的原始数据、一次拟合曲线和三次拟合曲线,给出MATLAB代码和运行结果。 代码如下: x=[1,2,3,4,5,6,7,8,9,10]; y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]; plot(x,y); title('原始数据'); p=polyfit(x,y,1); q=polyval(p,x); figure,plot(x,q); title('一次拟合'); p=polyfit(x,y,2); q=polyval(p,x); figure,plot(x,q); title('二次拟合'); 运行结果如下:

1 2 3 4 5 6 7 8 9 10 12 3 4 5 6 7 8 原始数据 123 456789 102 2.5 3 3.54 4.5 55.56 6.57一次拟合 123456789 101 2 3 4 5 6 7 二次拟合 2、在[0,3π]区间,绘制y=sin(x)曲线(要求消去负半波,即(π,2π)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。 代码如下: clear clc x=(0:0.01:3*pi); y=sin(x); plot(x,y); y1=(y>=0).*y; figure,plot(x,y1);

《MATLAB程序设计》复习资料

Matlab 习题及复习要点 1. Matlab 的英文组成;程序和变量的命名规则; 在MATLAB 语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab 中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp ”目录中有脚本文件abc.m ,若要能在命令窗口输入abc 执行则..); 3.熟悉Matlab 中的几种数据类型(int8、double 、logical 等); 4.在MATLAB 中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye 、zeros 等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break 、continue 等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII 码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 8. 在MATLAB 中求解线性方程组=Ax b 可采用什么指令; 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end 和swich…case 结构的语法,要准确。 12. 会编写分段函数的程序; x 和y 满足如下关系: 221211212x x y x x x x ?? 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on 、plot 、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]= meshgrid(x,y); 这里meshgrid (x ,y )的作用是分别产生以向量x 为行,向量y 为列的两个大小相同的矩阵,其中x 的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X ;同理y 的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y 。即 X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

matlab程序设计第三章课后习题答案

1. p138 第6题在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。 >> t=0:0.01:pi; >> x1=t; >> y1=2*x1-0.5; >> x2=sin(3*t).*cos(t); >> y2=sin(3*t).*sin(t); >> plot(x1,y1,'r-',x2,y2,'g-') >> axis([-1,2,-1.5,1]) >> hold on >> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*'); 截图:

p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。 function [ output_args ] = Untitled2( input_args ) %UNTITLED2 Summary of this function goes here % Detailed explanation goes here theta=0:0.01:2*pi; a=input('请输入a的值:'); b=input('请输入b的值:'); n=input('请输入n的值:'); rho=a*sin(b+n*theta); polar(theta,rho,'k'); end 下面以a=1,b=1,n=1的极坐标图形为基础来分析a、b、n的影响。

对a的值进行改变:对比发现a只影响半径值的整倍变化 对b的值进行改变:对比发现b的值使这个圆转换了一定的角度

对n的值进行改变:对比发现当n>=2时有如下规律 1、当n为整数时,图形变为2n个花瓣状的图形 2、当n为奇数时,图形变为n个花瓣状的图形 分别让n为2、3、4、5

matlab程序设计实践-牛顿法解非线性方程

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。第一题需要把数据文本文档和m文件放在一起。全部测试无误,放心使用。本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。←记得删掉这段话 班级: ? 学号: 姓名:

一、《MATLAB程序设计实践》Matlab基础 表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散 空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。 由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一 个matlab程序画出如下的几种图形来分析其取向分布特征: (1)用Slice函数给出其整体分布特征; " ~ (2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);

(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。 (

备注:数据格式说明 解: (1)( (2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如 下: fid=fopen(''); for i=1:18 tline=fgetl(fid); end phi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19); [ while ~feof(fid) tline=fgetl(fid); data=str2num(tline); line=line+1;数据说明部分,与 作图无关此方向表示f随着 φ1从0,5,10,15, 20 …到90的变化而 变化 此方向表示f随着φ 从0,5,10,15, 20 … 到90的变化而变化 表示以下数据为φ2=0的数据,即f(φ1,φ,0)

实验3MATLAB程序设计

1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0;

for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

刘卫国版MATLAB程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');

-8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)');

-10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。

《MATLAB程序设计》复习

Matlab习题及复习要点 1.Matlab的英文组成;程序和变量的命名规则; 在MATLAB语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp”目录中有脚本文件abc.m,若要能在命令窗口输入abc执行则..); 3.熟悉Matlab中的几种数据类型(int8、double、logical等); 4.在MATLAB中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye、zeros等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break、continue等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 Ax b可采用什么指令; 8. 在MATLAB中求解线性方程组 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end和swich…case结构的语法,要准确。 12. 会编写分段函数的程序; x和y满足如下关系: 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on、plot、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]=?meshgrid(x,y); 这里meshgrid(x,y)的作用是分别产生以向量x为行,向量y为列的两个大小相同的矩阵,其中x的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Y = -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0

实验二--MATLAB程序的设计(含实验报告)

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 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)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1

1实验一 Matlab程序设计与M文件(1)

实验一 Matlab 程序设计与M 文件 一、实验目的 1. 掌握Matlab 程序设计常用命令,如,循环、选择、暂停、显示输出、输入变量值等。 2. 掌握Matlab 的M 文件的创建于使用,包括脚本文件和函数文件。 3. 掌握常用的编程技巧。 二、实验内容 1. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。其中90分~100分为A ,80分~89分为B ,79分~79分为C ,60分~69分为D ,60分以下为E 。 要求: (1) 分别用if 语句和switch 语句实现。 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 2. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%。 (2) 工作时数低于60小时者,扣发700元。 (3) 其余按每小时84元计发。 试编程按输入的工号和该号员工的工时数,计算应发工资。 3. 根据2 222211116123n π=++++,求π的近似值。当n 分别取100、1000、10000时,结果是多少? 要求:分别用循环结构和向量运算(使用sum 函数)来实现。 4. 考虑以下迭代公式: 1n n a x b x +=+ 其中a 、b 为正的学数。 (1) 编写程序求迭代的结果,迭代的终止条件为|x n+1-x n |≤10-5,迭代初值x 0=1.0,迭代次数不超过500次。 (2) 如果迭代过程收敛于r ,那么r 的准确值是,当(a,b)的值 取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

5. 已知 12312311021 323 n n n n f n f n f n f f f f n ---==??==??==??=-+>? 求f 1~f 100中: (1) 最大值、最小值、各数之和。 (2) 正数、零、负数的个数。 6. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求[2,50]区间内: (1) 亲密数对的对数。 (2) 与上述亲密数对对应的所有亲密素数之和。 7. 设2411()(2)0.1(3)0.01 f x x x =+-+-+,编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 8. 一物理系统可用下列方程组来表示: 111211 12 220cos sin 0sin 0cos 000sin 000cos 1a m m a m g m N m N m g θθθθθθ--??????????????????=??????-??????-?????? 从键盘输入m 1、m 2和θ的值,求a 1、a 2、N 1和N 2的值。其中g 取9.8,输入θ时以角度为单位。 要求:定义一个求解线性方程组AX=B 的函数文件,然后在命令文件中调用该函数文件。

MATLAB程序设计实验报告

MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析

练习3 MATLAB程序设计

练习4 MATLAB 程序设计 一、目的和要求 (1)掌握MAM 的程序流程控制结构。 (2)掌握M 文件的结构。 (3)掌握函数调用和参数传递。 (4)了解程序性能剖析窗口。 (5)掌握利用函数句柄进行数值分析。 二、内容和步骤 MATLAB 的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB 也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。 1.使用程序流程控制 Fibonacci 数列的各元素为:1,1,2,3,5,8,…,满足以下关系: 2 1211 1--+===n n n F F F F F 用M 函数文件实现,数列的元素个数为输入变量。 (l )按M 函数文件格式创建文件开头。 function f=shiyan0501(n) %SHIYAN0501 Fibonacci % Fibonacci 数列 % n 元素个数 % f 构成Fibonacci 数列向量 (2)用While 循环实现程序功能。 f(1)=1;f(2)=1;i=2; while i<=n f(i+1)=f(i-1)+f(i); i =i+1; end 在命令窗口输入调用命令调用函数,元素个数n=10, 结果:( ) (3)使用for 循环实现,重新编制上述函数。 结果:(

) (4)当Fibonacci 数列中某个元素大于50时,用“break ”命令退出循环结构,修改程序如下: 结果:( ) (5)将该.m 文件生成P 码文件: >>pcode shiyan0501 将 shiyan0501.m 删除,重新调用函数文件,执行结果如下: 结果:( ) 2.使用函数调用 计算 2 5 21 22 2432(2)!arcsin ,143 1645 2 (!)(21) n n x x n x x x x n n +???≈+ + ++

matlab程序设计作业

Matlab程序设计作业 姓名: 学号: 专业:

? MATLAB 程序设计》作业 1、考虑如下x-y 一组实验数据: x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y 二[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2] 分别绘出plot 的原始数据、一次拟合曲线和三次拟合曲线,给出 原始曲线 MATLAB 代码和运行结果。 7 6 5 4 3 2 2 3 4 5 6 7 8 9 10

7 6.5 6 5.5 5 4.5 4 3.5 3 2.5 10 一次拟合 三次拟合

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2]; figure; plot(x,y) p1=polyfit(x,y,1); y1=polyval(p1,x); figure; plot(x,y1) p2=polyfit(x,y,3); y2=polyval(p2,x); figure; plot(x,y2) 2、在[0, 3n区间,绘制y二Sin(x)曲线(要求消去负半波,即(n 2n)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。 x=0:pi/1000:3*pi; y=Sin(x); y1=(y>=0).*y; %消去负半波figure(1); plot(x,y1, 'b' ); a=mean(y1) %求出y1 的平均值 b=max(y1) %求出y1 的最大值b, 以及最大值在矩阵中的位置; d=x(find(y1==b)) >> ex1 a = 0.4243 b = 1 d = 1.5708 7.8540 >>

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

matlab程序设计与应用实验指导书

附件2 《matlab程序设计与应用》实验指导书 山东建筑大学信息与电气工程学院

前言 一、实验目的 本课程是电气工程及其自动化、自动化、电力工程与管理专业本科生的 学科基础选修课,它在线性代数、信号分析和处理、控制系统设计和仿真等 方面有着广泛的应用。主要是学习MATLAB的语法规则、基本命令和使用环境,使学生掌握MATLAB的基本命令和基本程序设计方法,提高使用该语言 的应用能力,具有使用MATLAB语言编程和调试的能力,以便为后续多门课 程使用该语言奠定必要的基础。 通过上机实验,使学生掌握MATLAB在线帮助功能的使用、熟悉MATLAB运行环境和MATLAB语言的主要特点,掌握MA TLAB语言的基本 语法规则及基本操作命令的使用,学会M文件的建立和使用方法以及应用MATLAB实现二维和三维图形的绘制方法,具有使用MATLAB语言编程和 调试的能力。 二、实验前预习 每次实验前,学生须仔细阅读本实验指导书的相关内容,明确实验目的、要求;明确实验步骤、测试数据及需观察的现象;复习与实验内容有关的理论知识;预习仪器设备的使用方法、操作规程及注意事项;做好预习要求中提出的其它事项。 三、实验注意事项 1.实验开始前,应先检查本组电脑设备是否工作正常,matlab软件工作是否正常。 2.实验时每位同学应独立完成实验任务,避免抄袭。 3.实验后应及时将实验数据进行记录与存盘,避免因电脑故障或其它原因造成实验数据的丢失。 4.实验中严格遵循电脑操作规程,如电脑发生异常现象,应立即切断电源,

报告指导教师检查处理。 5.测量数据或观察现象要认真细致,实事求是。 6.未经许可,不得对电脑进行软件及硬件的更改操作。 7.实验结束后,实验记录交指导教师查看并认为无误后,方可关掉电脑离开。 8.爱护公物,发生仪器设备等损坏事故时,应及时报告指导教师,按有关实验管理规定处理。 9.自觉遵守学校和实验室管理的其它有关规定。 四、实验总结 每次实验后,应对实验进行总结,即实验数据进行整理,绘制波形和图表,分析实验现象,撰写实验报告。实验报告除写明实验名称、日期、实验者姓名、同组实验者姓名外,还包括: 1.实验目的; 2.实验内容 3.实验流程图; 4.程序命令清单; 5.运行结果; 6.实验的收获与体会; 7.回答每项实验的有关问答题。

D实验五 M文件和MATLAB程序设计

实验五M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意事项? 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits: 2. 编程求满足∑=>m i i 11000020的最小m 值。 a=0; i=1; while (a<100000) a=a+pow2(i); i=i+1; end m=i-1 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x)

相关主题
文本预览
相关文档 最新文档