第八章MATLAB编程

合集下载

matlab编程课件

matlab编程课件

1、顺序结构
顺序结构是指按照程序中语句排列顺序一次执行,直到程序的 最后一个语句。这是最简单的一种程序结构,一般涉及数据的输入, 数据的计算或处理,数据的输出等内容。 这种程序容易编制,但是结构单一,能够实现的功能有限。
2、循环结构
循环结构由while或for语句引导,用end结束, 这2个语句之间的部分称为循环体。
建立新的M文件
建立新的M文件,启动文本编辑器有3种方法:
菜单操作 主窗口菜单 -> File -> New -> M-file 工具栏操作
主窗口工具栏 -> New -> M-File
命令操作 命令窗口 -> edit
打开已有的M文件
打开已有的M文件,也有3种方法:
菜单操作 主窗口菜单 -> File -> Open -> 打开对话框 工具栏操作
主窗口工具栏 -> Open File -> 打开对话框
命令操作 命令窗口 -> edit 文件名
脚本程序
•是一系列命令的集合。
•可调用Matlab工作域内所有数据,且产生的 变量均为全局变量
•以%引导的是注释行,不可执行
•运行此程序前,要将此m文件放在当前目录
• Matlab脚本程序一例
%prog1.m 脚本程序范例,画出花瓣 angle=-pi:0.01:pi; r=sin(10*angle).^2; polar(angle,r);
三、Matlab流程控制语句
MATLAB程序结构
• 按照程序设计的观点, 任何算法功能都可以 通过由程序模块组成的三种基本程序结构 的组合来实现:
– 顺序结构:程序按程序语句或模块在执行流中 的顺序逐个执行。 – 选择结构:程序按设定的条件实现程序执行流 的多路分支。 – 循环结构:程序按给定的条件重复地执行指定 的程序段或模块。

第八章 MATLAB的符号运算1

第八章 MATLAB的符号运算1

什么是符号运算 • 与数值运算的区别 ※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
• 特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
• Symbolic Math Toolbox——符号运算工具包 通过调用Maple软件实现符号计算的。
' ' 的内容可以是符号表达式,也可以是 符号方程。 例: f1='ax^2+bx+c' —— 二次三项式 f2= 'ax^2+bx+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程 ※符号表达式或符号方程可以赋给符号变量,以 后调用方便;也可以不赋给符号变量直接参与运 算
(2)用sym函数建立符号表达式。 u=sym('3*x^2-5*y+2*x*y+6') u= 3*x^2-5*y+2*x*y+6 m=sym('[a,b;c,d]') m= [ a, b] [ c, d]
9.1.2 符号表达式运算 1.符号表达式的四则运算 数值运算中,所有矩阵运算操作指令都比较直观、简单。例如:a=b+c; a=a*b ;A=2*a^2+3*a-5等。而符号运算就不同了,所有涉及符 号运算的操作都有专用函数来进行,符号表达式的四则运算和其它表达式 的运算并无不同,但要注意,其运算结果依然是一个符号表达式。符号 表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul 和symdiv来实现,幂运算可以由sympow来实现。如: syms x f=2*x^2+3*x-5 g=x^2-x+7 symadd(f,g) symsub(f,g) symmul(f,g) symdiv(f,g) sympow(f,'3*x') 另外,与数值运算一样,也可以用+、-、*、/、^实现符号运算。

数字图像处理及应用MATLAB第8章.ppt

数字图像处理及应用MATLAB第8章.ppt
功能:图像文件的写入(保存),把图像写入图形文件中 格式:imwrite(A,filename,fmt) ;A,filename,fmt意义同上 所述。
(3)imshow 功能:显示图像
格式:imshow(I,n) ;imshow(I,[low high]) ;imshow(BW) %显示黑白图像
imshow(X,map) %显示索引色图像;imshow(RGB) %显示真彩色图像
imshow filename (4)figure
功能:创建图形窗口 (5)subplot
功能:将多个图画到一个平面上的工具。 格式:subplot(m,n,p)或者subplot(mnp) 说明:其中,m表示是图排成m行,n表示图排成n列,也就 是整个figure中有n个图是排成一行的,一共m行。
(a)原始图像 实验结果图
(b) 处理后图像
(4)实现真彩色图像与索引图像的互相转换。
clear,clc close all RGB1 = imread('peppers.png');%读入真彩色图像 [X1,map1] = rgb2ind(RGB1,128);%真彩色图像转化为索引图 imshow(X1,map1) %显示索引图像 load clown;%载入图像 rgb2=ind2rgb(X,map);%将索引图像转化为真彩色图像 figure,imshow(rgb2)
2、实验中所用部分函数介绍
(1)imread 功能:图像文件的读取 格式: A=imread(filename,fmt) 将文件命为filename表示的扩展名为fmt的图像文件读Байду номын сангаас到矩
阵A中。MATLAB支持的图像格式有bmp、jpg或jpeg、tif或tiff、 gif、pcx、png、xwd。 (2)imwrite

matlab编程简明教程

matlab编程简明教程

>> isfinite(5) >> isinf(5)
14
运算优先级
括号 幂,点幂 正号,负号,逻辑非 乘,除,点乘,点除 加,减 冒号运算 关系运算
& | && ||


15
本讲主要内容
M 文件 Matlab 编程基础
算术运算、关系运算、逻辑运算 控制结构:
顺序结构:数据输入输出(input、disp、fprintf 等) 选择结构:if 语句、switch 语句 循环结构:for 循环、while 循环
\n ( 换行 ) \t ( 制表符 ) \b ( 退格 ) \\ ( 反斜杆 ) %% ( 百分号 )
20
fprintf
例: >> a='Hello';
>> b=2.4; >> c=100*pi; >> fprintf('a=%s, b=%f, c=%e\n',a,b,c)
format 中的格式字符串要与输出变量一一对应
1
0
1
1
0
1
0
0
在 Matlab 中,0 表示 “假”,非零表示 “真”
12
逻辑运算
逻辑运算函数:all、any
any(x)
如果向量 X 中存在非零元素,则返回 1, 否则返回 0
all(x)
如果向量 X 中所有元素都非零,则返回 1, 否则返回 0
若 x 为矩阵,则 any 和 all 按列运算, 返回一个 0-1 向量
y=a+1; elseif n==1
y=a*(1+n); elseif n==2

精通matlab6.5版 8. SIMULINK交互式仿真集成环境

精通matlab6.5版 8. SIMULINK交互式仿真集成环境

第八第八章章 SIMULINK SIMULINK 交互式仿真集成环境交互式仿真集成环境8.1 引导SIMULINK 是一个进行动态系统建模、仿真和综合分析的集成软件包。

它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。

在SIMULINK 提供的图形用户界面GUI 上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。

它外表以方块图形式呈现,且采用分层结构。

从建模角度讲,这既适于自上而下(Top-down )的设计流程(概念、功能、系统、子系统、直至器件),又适于自下而上(Bottum-up ) 逆程设计。

从分析研究角度讲,这种SIMULINK 模型不仅能让用户知道具体环节的动态细节,而且能让用户清晰地了解各器件、各子系统、各系统间的信息交换,掌握各部分之间的交互影响。

在SIMULINK 环境中,用户将摆脱理论演绎时需做理想化假设的无奈,观察到现实世界中摩擦、风阻、齿隙、饱和、死区等非线性因素和各种随机因素对系统行为的影响。

在SIMULINK 环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。

由于SIMULINK 环境使用户摆脱了深奥数学推演的压力和烦琐编程的困扰,因此用户在此环境中会产生浓厚的探索兴趣,引发活跃的思维,感悟出新的真谛。

在MATLAB6.x 版中,可直接在SIMULINK 环境中运作的工具包很多,已覆盖通信、控制、信号处理、DSP 、电力系统等诸多领域,所涉内容专业性极强。

本书无意论述涉及工具包的专业内容,而只是集中阐述:SIMULINK 的基本使用技法和相关的数值考虑。

节8.1虽是专为SIMULINK 初学者写的,但即便是熟悉SIMULINK 以前版本的读者也值得快速浏览这部分内容,因为新版的界面、菜单、工具条、模块库都有较大的变化。

第8.2节比较详细地阐述建模的基本操作:通用模块的具体化设置、信号线勾画、标识、模型窗参数设置。

matlab第八讲教案

matlab第八讲教案

西南科技大学本科生课程备课教案计算机技术在安全工程中的应用---- Matlab入门及应用授课教师:徐中慧班级:专业:安全技术及工程第八章绘图课型:新授课教具:多媒体教学设备,matlab教学软件一、目标与要求掌握matlab中二维绘图、三维绘图、子图等相关图形绘制功能。

二、教学重点与难点本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用绘图的相关函数实现相应的功能。

三、教学方法本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。

四、教学内容课后习题讲解(1)用switch/case,menu结构编写程序求解下列问题:提示用户输入入学时间是一年、二年、三年还是四年,输入数据是字符串。

根据输入数据决定期末考试的时间。

其中,一年级周一考试,二年级周二考试,三年级周三考试,四年级周四考试。

Input=menu('Enter a value for your grade',‘one year','two years','three years','four years'); switch In put case 1disp('Mo nday')case 2disp('Tuesday')case 3disp('Wed nesday')case 4disp('Thursday')end(2)编写程序,提示用户输入购买方糖的数量,输入数据是糖的块数。

计算购买方糖的费用。

价格确定方法是:1块=$0.75;2块=1.25; 3块=1.65。

当多于3块时,总费用=$1.65+$0.30*(购买数量-3)。

sugar =input( 'Enter a value for quantityof sugar\n');switch sugarcase 1fprintf( '%3.0f lump sugar costs $0.75\n' ,sugar)case 2fprintf( '%3.0f lump sugar cost $1.25\n' ,sugar)case 3fprintf( '%3.0f lump sugar cost $1.65\n' ,sugar) otherwiseoutput=1.65+0.3*(sugar-3);fprintf( '%3.0f lump sugars cost $%4.2f\n' ,sugar,output)end3)用 for 循环结构求矢量元素的和,已知矢量 x 等于x=[1 23 43 72 87 56 98 33]用函数 sum 检查计算结果,并用 while 重写一遍程序。

matlab编程基础与工程应用第八章课件

matlab编程基础与工程应用第八章课件

【 例 8.1-1】 电 阻 电 路 如 图 8-1 所 示 , 已 知 R1=R2=R3=1Ω , R4=R5=R6=2Ω,uS1=4V,uS2=-2V,求I3。
电阻电路可用回路电流法、支路电流法、节 点电压法等方法求解,本例给出回路电流法。
【解】 解法一:回路电流法。回路电流法以回路电 流为变量,根据基尔霍夫电压定律(KVL), 列写电路的独立回路组的KVL方程。如图81,将3个网孔作为选取的独立回路组,则回 路电流法的KVL方程组为



程序还调用 MATALB 信号处理工具箱中的周期 矩形脉冲的产生函数square。其调用格式为: square(T);产生一个周期为2π的矩形脉冲函数。 其最大值为 1 ,最小值为 -1. 函数自变量取值为 相量T的各元素的值。 square (T, duty);产生一个占空比duty、周期为 2π的矩形脉冲函数。 square(w*T, duty);产生一个占空比duty、周期 为2π/w的矩形脉冲函数。 由以上说明可知,square(w*t, 50)产生一个周 期为 2π/w 、占空比为 50% 、幅值为± 1 的周期 性矩形脉冲。
������ ������������ ������������ //������������ Z 1
电流表的读数即为电流������的模值。
clear clc w=1000; ZR=20; Us=160; ZL=j*w*0.04 ZC=-j*(1/(w*20*1e-6)); Z1=(ZL*ZC)/(ZL+ZC); Z=ZR+Z1; U=Us*(Z1/Z); I=U/ZL; Iy=abs(I) 程序运行结果为 Iy = 3.9801
(R1+ R6+ R2) I1- R6 I3- R2 I2=- uS1 (R2+ R4 + R5) I2- R2 I1- R5 I3=- uS2 (R3+ R5+ R6) I3- R6 I1- R5 I2= uS2

《Matlab教案》课件

《Matlab教案》课件

《MATLAB教案》PPT课件第一章:MATLAB概述1.1 MATLAB简介介绍MATLAB的历史和发展解释MATLAB的含义(Matrix Laboratory)强调MATLAB在工程和科学计算中的应用1.2 MATLAB界面介绍MATLAB的工作空间解释MATLAB的菜单栏和工具栏演示如何创建、打开和关闭MATLAB文件1.3 MATLAB的基本操作介绍MATLAB的数据类型演示如何进行矩阵运算解释MATLAB中的向量和矩阵运算规则第二章:MATLAB编程基础2.1 MATLAB脚本编程解释MATLAB脚本文件的结构演示如何编写和运行MATLAB脚本强调注释和代码的可读性2.2 MATLAB函数编程介绍MATLAB函数的定义和结构演示如何创建和使用MATLAB函数强调函数的重用性和模块化编程2.3 MATLAB编程技巧介绍变量和函数的命名规则演示如何进行错误处理和调试强调代码的优化和性能提升第三章:MATLAB数值计算3.1 MATLAB数值解算介绍MATLAB中的数值解算工具演示如何解线性方程组和不等式解释MATLAB中的符号解算和数值解算的区别3.2 MATLAB数值分析介绍MATLAB中的数值分析工具演示如何进行插值、拟合和数值积分解释MATLAB中的误差估计和数值稳定性3.3 MATLAB优化工具箱介绍MATLAB优化工具箱的功能演示如何使用优化工具箱进行无约束和约束优化问题解释MATLAB中的优化算法和参数设置第四章:MATLAB绘图和可视化4.1 MATLAB绘图基础介绍MATLAB中的绘图命令和函数演示如何绘制二维和三维图形解释MATLAB中的图形属性设置和自定义4.2 MATLAB数据可视化介绍MATLAB中的数据可视化工具演示如何绘制统计图表和散点图解释MATLAB中的数据过滤和转换4.3 MATLAB动画和交互式图形介绍MATLAB中的动画和交互式图形功能演示如何创建动画和交互式图形解释MATLAB中的图形交互和数据探索第五章:MATLAB应用案例5.1 MATLAB在信号处理中的应用介绍MATLAB在信号处理中的基本概念演示如何使用MATLAB进行信号处理操作解释MATLAB在信号处理中的优势和应用场景5.2 MATLAB在控制系统中的应用介绍MATLAB在控制系统中的基本概念演示如何使用MATLAB进行控制系统分析和设计解释MATLAB在控制系统中的优势和应用场景5.3 MATLAB在图像处理中的应用介绍MATLAB在图像处理中的基本概念演示如何使用MATLAB进行图像处理操作解释MATLAB在图像处理中的优势和应用场景《MATLAB教案》PPT课件第六章:MATLAB Simulink基础6.1 Simulink简介介绍Simulink作为MATLAB的一个集成组件解释Simulink的作用:模型化、仿真和分析动态系统强调Simulink在系统级设计和多领域仿真中的优势6.2 Simulink界面介绍Simulink库浏览器和模型窗口演示如何创建、编辑和运行Simulink模型解释Simulink中的块和连接的概念6.3 Simulink仿真介绍Simulink仿真的基本过程演示如何设置仿真参数和启动仿真解释Simulink仿真结果的查看和分析第七章:MATLAB Simulink高级应用7.1 Simulink设计模式介绍Simulink的设计模式,包括连续、离散、混合和事件驱动模式演示如何根据系统特性选择合适的设计模式解释不同设计模式对系统性能的影响7.2 Simulink子系统介绍Simulink子系统的概念和用途演示如何创建和管理Simulink子系统解释子系统在模块化和层次化设计中的作用7.3 Simulink Real-Time Workshop介绍Simulink Real-Time Workshop的功能演示如何使用Real-Time Workshop进行代码解释代码对于硬件在环仿真和嵌入式系统开发的重要性第八章:MATLAB Simulink库和工具箱8.1 Simulink库介绍Simulink库的结构和分类演示如何访问和使用Simulink库中的块解释Simulink库对于模型构建和功能复用的意义8.2 Simulink工具箱介绍Simulink工具箱的概念和功能演示如何安装和使用Simulink工具箱解释Simulink工具箱在特定领域仿真和分析中的作用8.3 自定义Simulink库介绍如何创建和维护自定义Simulink库演示如何将自定义块添加到库中解释自定义库对于个人和组织级模型共享的重要性第九章:MATLAB Simulink案例分析9.1 Simulink在控制系统中的应用介绍控制系统模型在Simulink中的构建演示如何使用Simulink进行控制系统设计和分析解释Simulink在控制系统教育和研究中的应用9.2 Simulink在信号处理中的应用介绍信号处理模型在Simulink中的构建演示如何使用Simulink进行信号处理仿真解释Simulink在信号处理领域中的优势和实际应用9.3 Simulink在图像处理中的应用介绍图像处理模型在Simulink中的构建演示如何使用Simulink进行图像处理仿真解释Simulink在图像处理领域中的优势和实际应用第十章:MATLAB Simulink项目实践10.1 Simulink项目实践流程介绍从需求分析到模型验证的Simulink项目实践流程演示如何使用Simulink进行项目规划和实施解释Simulink在项目管理和协作中的作用10.2 Simulink与MATLAB的交互介绍Simulink与MATLAB之间的数据交互方式演示如何在Simulink中使用MATLAB函数和脚本解释混合仿真模式对于复杂系统仿真的优势10.3 Simulink项目案例分析具体的Simulink项目案例演示如何解决实际工程问题解释Simulink在工程教育和项目开发中的应用价值《MATLAB教案》PPT课件第十一章:MATLAB App Designer入门11.1 App Designer简介介绍App Designer作为MATLAB中的应用程序开发环境解释App Designer的作用:快速创建跨平台的MATLAB应用程序强调App Designer在简化MATLAB代码部署和用户交互中的优势11.2 App Designer界面介绍App Designer的用户界面和工作流程演示如何创建新应用和编辑应用界面解释App Designer中的组件和布局的概念11.3 App Designer编程介绍App Designer中的MATLAB编程模式演示如何使用App Designer中的MATLAB代码块解释App Designer中事件处理和应用程序生命周期管理的重要性第十二章:MATLAB App Designer高级功能12.1 App Designer用户界面设计介绍App Designer中用户界面的定制方法演示如何使用样式、颜色和主题来美化应用界面解释用户界面设计对于提升用户体验的重要性12.2 App Designer数据模型介绍App Designer中的数据模型和模型视图概念演示如何创建、使用和绑定数据模型和视图解释数据模型在应用程序中的作用和重要性12.3 App Designer部署和分发介绍App Designer应用程序的部署和分发流程演示如何打包和发布应用程序解释如何为不同平台安装和运行App Designer应用程序第十三章:MATLAB App Designer案例研究13.1 图形用户界面(GUI)应用程序设计介绍使用App Designer设计的GUI应用程序案例演示如何创建交互式GUI应用程序来简化MATLAB脚本解释GUI应用程序在数据输入和结果显示中的作用13.2 数据分析和可视化应用程序设计介绍使用App Designer进行数据分析和可视化的案例演示如何创建应用程序来处理和显示大型数据集解释App Designer在数据分析和决策支持中的优势13.3 机器学习和深度学习应用程序设计介绍使用App Designer实现机器学习和深度学习模型的案例演示如何将MATLAB中的机器学习和深度学习算法集成到应用程序中解释App Designer在机器学习和深度学习应用部署中的作用第十四章:MATLAB App Designer实战项目14.1 App Designer项目规划和管理介绍App Designer项目的规划和管理方法演示如何组织和维护大型应用程序项目解释项目管理和版本控制对于团队协作的重要性14.2 App Designer与MATLAB的集成介绍App Designer与MATLAB之间的数据和功能集成演示如何在App Designer中调用MATLAB函数和脚本解释集成MATLAB强大计算和分析能力的重要性14.3 App Designer项目案例实现分析具体的App Designer项目案例实现过程演示如何解决实际工程项目中的问题解释App Designer在工程项目实践中的应用价值第十五章:MATLAB App Designer的未来趋势15.1 App Designer的新功能和技术介绍App Designer的最新功能和技术发展演示如何利用新功能和技术提升应用程序的性能和用户体验强调持续学习和适应新技术的重要性15.2 App Designer在跨平台开发中的应用介绍App Designer在跨平台应用程序开发中的优势演示如何创建适用于不同操作系统的应用程序解释跨平台开发对于扩大应用程序市场的重要性15.3 App Designer的未来趋势和展望讨论App Designer在未来的发展趋势和潜在应用领域激发学生对于应用程序开发和创新的兴趣强调持续探索和创造新应用的重要性重点和难点解析本文档为您提供了一份详尽的《MATLAB教案》PPT课件,内容涵盖了MATLAB 的基本概念、编程基础、数值计算、绘图和可视化、应用案例、Simulink的基础知识、高级应用、库和工具箱的使用、案例分析以及项目实践、App Designer 的基础知识、高级功能、案例研究、实战项目和未来趋势等方面的内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while mod(100-2*g,4)|g+(100-2*g)/4-36 g=g+1; end; sprintf('鸡数是%d; 兔数是%d',g,36-g)
注: mod(100-2*g,4)0表示100-2*g只脚不全是
兔脚;在mod(100-2*g,4)=0条件下g+(1002*g)/4-360进一步判定100-2*g只脚不全是 兔脚,故当前的g不对应任何解.
if mod(x,i)==0 break; end; end; if i==b y=1; else y=0; end;
例4:编一个函数对随机输入的一个大于1
的正数n,输出不大于n的所有素数
function a=sushubiao(n); if n<2 error(‘输入不合要求!’); end; k=1; for i=1:n if sushu(i) %是否素数 a(k)=i;k=k+1; end; end;
for-end 循环
for-end 循环允许一组命令以预定的 固定次数重复.
其一般形式为:
for i=某一维数组 {循环体} end;
求前n个正整数平方之和
例6:随机输入一个正整数n,计算前n个正整
数平方之和,并用反复执行此程序的办 法验证此和都等于 (1/6)n(n+1)(2n+1) 解:程序为
解:
x=10000*rand for n=2:100 %100为10000的平方根 if fibodt(n)>x %第n个Fibonacci数>x break; end; end; while mod(fibodt(n),2)%第n个Fibonacci数是偶 n=n+1; end; sprintf('不小于%f最小偶Fibonacci数是 %d.',x,fibodt(n))
§8.4 Matlab程序结构
原则上,只要有顺序,循环和分支结构的 计算机语言,即可编程解决任何计算问 题. Matlab有这三种结构,故可用它编 程解决任何计算问题. Matlab虽然没有C语言那样丰富的控制 结构,但Matlab自身的强大功能(众多的 函数及命令)弥补了这个不足,使用户几 乎感觉不到困难.人们评价说: Matlab语言是一种完善而易用的高水平 编程语言.
第八章 Matlab编程及应用
§8.1 §8.2 §8.3 §8.4 §8.5 引言 M文件的形式 全局变量与局部变量 Matlab 的程序结构 Matlab 编程练习题
§8.1
引言
Matlab是一个高性能的科学计算软件,它 将计算,可视化和编程功能集成于一个使 用非常方便的环境. Matlab是一个强有力的操作环境,提供完 整而易于使用的语言,这是一个是很方便 的解释性编程语言,与C语言等兼容.因而, Matlab程序语法简单,容易调试,人机交 互性强. 此外,Matlab有一系列非常强有力的工具 箱和函数,除可用来解决各种各样复杂计 算问题之外,更可给编程带来简化,是公 认最好的第四代计算机语言.
循环结构
计算机的优势之一在于它能按设定的方 案以高速度重复执行若干运算,求得用 手工很难实现的计算结果. 当编程中涉及运行有规律的重复运算时, 要用循环结构,即将某些语句重复执行. 一组被重复执行的语句称为循环体.它 每循环一次,都必须做出是继续重复或 是停止的判断,其依据称为终止条件. Matlab语言提供两种循环方式: for - end 和 while - end
解: tongji.m 的内容如下:
function [p,q]=tongji(x) [m,n]=size(x); % x的行列数 if m~=1 error(‘不是行向量!’); end; p=sum(x)/n; q=0; for i=1:n q=q+(x(i)-p)*(x(i)-p); end;
§8.2 M文件的形式
Matlab程序,即M文件,有两种类型,它们 是:命令文件和函数文件. 命令文件是直接交互指令行操作方式的 发展,非常容易编写,只要把有关的指令 按顺序写出来组成一个M文件即可.但此 类文件不能适应计算复杂的问题. 函数文件相当于C语言的”函数”,可灵 活调用.Matlab编程也提倡尽量多编函 数文件作为子程序,以求程序更清晰,层 次更分明,便于调试和阅读.
if–elseif––else–end分支结构 结构形式:
if 逻辑表达式ex1 {ex1为真时执行的命令序列1} elseif 逻辑表达式ex2 {ex2为真时执行的命令序列2} elseif 逻辑表达式3 {ex3为真时执行的命令序列3} else {ex1-ex3全为假时执行的命令序列} end
A=rand(m,n) %34随机矩阵 for i=1:m for j=1:n p=p+A(i,j); end; end; p=p/m/n; for i=1:m for j=1:n B(i,j)=A(i,j)-p; end; end; p,B %显示结果
while-end 循环
while-end 循环以不定的循环次数求一 组语句的值. 其一般形式为:
调用方法 n=100*rand;sushubiao(n)
例5:编一个函数对随机输入的一个正偶数
2n,验证2n是两个素数之和.
function y=godebaha(n) a=ceil(sqrt(n));y=0; if rem(n,2) | n<4 error('输入不合要求') end; for i=2:a if sushu(i)&sushu(n-i) y=1;break; end; end;
命令文件举例
编写命令文件,只要把有关的指令用”;” 隔开,并按顺序写出来即可. 例1:编一个求前100个正整数之和的命令 文件:example1.m 解: example1.m 的内容如下: s=0; for i=1:100 s=s+i; end; s
函数文件
函数文件一般形式如下:
Function [输出参数1,…,输出参数n] = 函数名(输入参数1,…,输入参数m) {函数体}
Break 指令
功能:前面讲过,break 指令是改变执行顺
序的一种手段.它的功能就是导致最内 层的 while,for,if 等语句终止.
一般形式:在循环体内另设条件(通常用
if — end语句),达到适时退出循环的目 的.
例12 鸡兔同笼问题:已知一笼鸡兔共有
头36,和脚100,求鸡数j和兔数t 解1:g=1;
顺序结构
顺序结构实际上就是用复合表达式构成 的.复合表达式定义为用”;”号连接在 一起的若干表达式: 复合表达式=表达式1;表达式2;…;表达式n; Matlab程序按一行一行从上往下顺序执 行;同一行则按从左往右顺序执行. Goto 语句虽可强行改变执行顺序,但可 读性差,不足取.后面将要介绍的 break 语句才是Matlab编程中经常用来改变执 行顺序的手段.
解2
for j=1:50 if rem(100-j2,4)==0&(j+(100-j2)/4)==36 break; end; j=j+1; end; sprintf('鸡数是%d, 兔数是%d.',j,36-j)
注:若满足判定条件时,当前的j 便是问题
的解.
例13:输入不大于10000的正随机数x,输 出不小于x的最小偶数Fibonacci数
function y=jishuhe(x) n=length(x);y=0; for i=1:n if mod(x(i),2) y=y+x(i); end; end;
%是否奇数
if–else–end 分支结构
结构形式: if 逻辑表达式
{为真时执行的命令序列} else {为假时执行的命令序列} end
注:⑴给该函数文件命名时须与函数名一致. ⑵ n=1时,第一行简化为
Function 输出参数= 函数名(输入参数)
⑶ 输入,输出参数可以是任意类型的量,字 符,不同维数数组或数据结构等. ⑷ 输入参数是已知量,输出参数则要进行计 算,其最后值是函数调用时的返回值.
例2:编一个求一维数组的平均值与方差的 函数文件:tongji.m
while 某一执行循环 体中所有命令,否则,就跳出循环.
例8:对随机输入的一个正数n,输出大于n
的第一个素数 解: n=10000*rand %不大于10000的随机数 i=floor(n+1); %不小于n+1的最小整数 while sushu(i)==0 %i不是素数 i=i+1; end; i %显示i
n=ceil(100*rand) %不大于100的随机数 s=0; for i=1:n s=s+i*i; end; s,s-n*(n+1)*(2n+1)/6
for-end 循环可嵌套
例7:求给定mn实矩阵A元素的平均值p,和各元
素与平均值的偏差组成的矩阵B 解:程序为: m=3;n=4;p=0;
调用方法 x=[1:100];[a,b]=tongji(x)
例3:编一个函数文件sushu.m判定数x是否素
数,若是,返回1,否则,返回0.内容如下:
function y=sushu(x); if((mod(x,1)|~(x>0)) error(‘不是正整数’); elseif x==2|x==3 y=1; elseif x==1 y=0; else b=ceil(sqrt(x))+1; for i=2:b end;
分支结构
为了完成所需的计算任务,命令序列经 常须按关系的检验结果有条件地执行, 这就是分支结构的任务.在Matlab编程 语言里,由 if - end 结构来解决. 分支结构共有三种形式,分别叙述如下.
相关文档
最新文档