热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数学常用软件matlab,数学软件Matlab

描述1数学软件Matlab——编程基础(脚本)2本讲主要内容M文件基本运算:算术、关系、逻辑简单的输入输出控制结构:顺序、选择、循环3Matlab编程入

描述

1

数学软件Matlab

——编程基础(脚本)

2

本讲主要内容

M文件基本运算:算术、关系、逻辑简单的输入输出控制结构:顺序、选择、循环

3

Matlab编程入门

Matlab作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能,同时也可以与C、FORTRAN等高级语言一样进行程序设计利用Matlab的程序控制功能,将相关Matlab命令编成程序存储在一个文件中(M文件),然后在命令窗口中运行该文件,Matlab就会自动依次执行文件中的命令,直到全部命令执行完毕在Matlab程序设计中,要充分利用Matlab数据结构的特点,提高编程效率

Matlab编程简介

4

用Matlab语言编写的程序称为M文件M文件以.m为扩展名M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法

两类重要的M文件(调用方式不同)

Script:脚本文件/命令文件Function:函数文件

M文件

M文件介绍

可以直接运行的M文件

5

M文件的创建的与编辑M文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用Matlab自带的M文件编辑器

M文件

新建一个M文件

菜单操作(File New  M-File)命令操作(editM文件名)命令按钮(快捷键)

打开已有的M文件

菜单操作(File Open)命令操作(editM文件名)命令按钮(快捷键)双击M文件

6

编程示例

u=[0:pi/60:2*pi];v=[0:pi/60:pi];[U,V]=meshgrid(u,v);R=3;X=R*sin(V).*cos(U);Y=R*sin(V).*sin(U);Z=R*cos(V);mesh(X,Y,Z);axis equal;

编程方式:新建一个M文件myprg1.m,内容如下:

例:用mesh绘制半径为3的球

命令行方式:

>>u=[0:pi/60:2*pi];>>v=[0:pi/60:pi];>>[U,V]=meshgrid(u,v);>>R=3;>>X=R*sin(V).*cos(U);>>Y=R*sin(V).*sin(U);>>Z=R*cos(V);>>mesh(X,Y,Z);>>axis equal;

在命令窗口输入myprg1,即可执行该M文件

文件的命名规则与变量相同!

7

本讲主要内容

M文件基本运算:算术、关系、逻辑简单的输入输出控制结构:顺序、选择、循环

8

关系运算

比较大小,如果结论是真则返回1,否则返回0

注意==与=的区别

关系操作符可以比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样

关系运算符

9

例:

关系运算举例

>>2+2==4

>>2>3

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

>>x&#61;[5 0; 4 2];>>x<4

10

逻辑运算

逻辑运算符

A&B等价于and(A,B)A|B等价于or(A,B)~A等价于not(A)

11

逻辑运算表

在Matlab中&#xff0c;0表示 “假”&#xff0c;非零表示 “真”

12

all(x)如果向量X中所有元素都非零&#xff0c;则返回1&#xff0c;否则返回0

若x为矩阵&#xff0c;则any和all按列运算&#xff0c;返回一个0-1向量

逻辑运算

逻辑运算函数&#xff1a;all、any

any(x)如果向量X中存在非零元素&#xff0c;则返回1&#xff0c;否则返回0

13

一些测试函数

>>isfinite(5)>>isinf(5)

测试函数

14

运算优先级

15

本讲主要内容

M文件基本运算&#xff1a;算术、关系、逻辑简单的输入输出控制结构&#xff1a;顺序、选择、循环

16

例&#xff1a;

A&#61;input(&#39;Please input A: &#39;)

数据的输入&#xff1a;input

A&#61;input(提示信息)

其中提示信息为字符串&#xff0c;该命令要求用户输入A的值(可以是数或字符串)

input

name&#61;input(&#39;What&#39;&#39;s your name?&#39;)

例&#xff1a;

输入字符串时必须带单引号单引号的输出&#xff1a;两个连续的单引号

17

disp(X)

输出变量X的值&#xff0c;X可以是数值矩阵或字符串一次只能输出一个变量

>>B&#61;[1 2 3; 4 5 6; 7 8 9];>>disp(B)

disp

数据的输出&#xff1a;disp

>>A&#61;&#39;Hello, Tom!&#39;;>>disp(A)

例&#xff1a;

18

fprintf

fprintf(format,variables)

数据的格式化输出&#xff1a;fprintf

按指定的格式将变量的值输出到屏幕或指定的文件format用来指定数据输出时采用的格式&#xff0c;包含&#xff1a;普通字符串、格式字符串、转义字符

格式字符串&#xff1a;以%开头&#xff0c;包括&#xff1a;

flags(可选)Widthandprecisionfields(可选)Conversioncharacter(格式说明符&#xff0c;必须)

19

格式说明符和转义字符

常见的格式说明符

常见的转义字符

20

fprintf

fprintf(&#39;a&#61;%-12.5f\n&#39;, pi)

以%开头

flag

field width

precision

格式说明符

-:左对齐&#43;:输出符号0:空白处添0空格:前面加一空格

字段宽度

小数点后的位数

21

fprintf

>>a&#61;&#39;Hello&#39;;>>b&#61;2.4;>>c&#61;100*pi;>>fprintf(&#39;a&#61;%s, b&#61;%f, c&#61;%e\n&#39;,a,b,c)

例&#xff1a;

format中的格式字符串要与输出变量一一对应

可以没有输出变量

>>fprintf(&#39;Today is Monday\n&#39;)

例&#xff1a;

22

本讲主要内容

M文件基本运算&#xff1a;算术、关系、逻辑简单的输入输出控制结构&#xff1a;顺序、选择、循环

23

程序控制结构有三种&#xff1a;顺序结构、选择结构和循环结构任何复杂的程序都由这三种基本结构组成

M文件控制流

按排列顺序依次执行各条语句&#xff0c;直到程序的最后

这是最简单的一种程序结构&#xff0c;一般涉及数据的输入输出、数据的计算或处理等

顺序结构

24

选择结构

选择结构根据给定的条件成立或不成立&#xff0c;分别执行不同的语句

选择结构的实现

if语句switch语句

25

单分支结构

if条件表达式语句组end

if条件语句

if条件表达式语句组1else语句组2end

双分支结构

26

if条件表达式1语句组1elseif条件表达式2语句组2... ...elseif条件表达式m语句组melse语句组end

多分支结构

if条件语句

27

根据表达式的不同取值&#xff0c;分别执行不同的语句

switch表达式case表达式1语句组1case表达式2语句组2... ...case表达式m语句组motherwise语句组end

switch语句

先计算表达式的值&#xff0c;然后将它依次与各个case指令后表达式的值进行比较&#xff0c;当比较结果为真时&#xff0c;就执行相应语句组&#xff0c;然后跳出switch结构。switch后面的表达式的值可以是一个标量或字符串。otherwise指令可以不出现。如果所有的比较结果都为假&#xff0c;则执行otherwise后面的语句组。

28

循环结构

循环结构根据给定的条件&#xff0c;重复执行指定的语句

循环结构的实现

for语句while语句

29

for循环变量&#61;取值列表循环体end

取值列表通常是一个向量将取值列表中的值依次赋给循环变量&#xff0c;直到全部取完&#xff0c;循环结束

for循环

不要在循环体内改变循环变量的值

为了提高代码的运行效率&#xff0c;应尽可能提高代码的向量化程度

30

for循环

clear;y&#61;0; n&#61;100;fork&#61;1:ny&#61;y&#43;1/(2*k-1);end

例&#xff1a;

已知 &#xff0c;当n&#61;100时&#xff0c;求y的值

例&#xff1a;计算s &#61; 1 &#43; 3 &#43; 10 - 28 &#43; 30 &#43; 50 - 12 - 8

clear;s&#61;0;x&#61;[1,3,10,-28,30,50,-12,-8];fork&#61;xs&#61;s&#43;k;end

31

循环语句可以嵌套使用通常&#xff0c;如果预先知道循环的次数&#xff0c;可采用for循环&#xff1b;如果预先无法确定循环次数&#xff0c;则可使用while循环。

while循环

while条件表达式循环体end

当条件表达式的值为真(非0)时&#xff0c;执行循环体语句

数论中的一个有趣问题&#xff1a;3n&#43;1问题&#xff1a;任取一个正整数&#xff0c;如果是偶数&#xff0c;用 2 除&#xff0c;如果是奇数&#xff0c;用 3 乘再加 1&#xff0c;反复这个过程&#xff0c;直到所得到的数为 1。问&#xff1a;是否存在使该过程永不中止的整数&#xff1f;

例&#xff1a;

32

while1n&#61;input(&#39;Please enter n (nonpositive quit): &#39;);ifn<&#61;0,break;endnt &#61; n;%将n的初始值记录下来whilen>1ifmod(n,2)&#61;&#61;0n &#61; n/2;elsen &#61; 3*n&#43;1;endfprintf(&#39; n&#61;%d \n&#39;, n);endfprintf(&#39; n&#61;%d is not we need! \n&#39;, nt);end

编程示例

33

这个例子给出了估计eps的一种方法。这里我们用大写EPS&#xff0c;因此系统中eps的值不会被覆盖。当EPS&#61;eps时&#xff0c;条件仍成立&#xff1b;而当EPS计算Matlab中eps值

while编程示例

k&#61;0; EPS&#61;1;while(1&#43;EPS) > 1EPS &#61; EPS/2;k &#61; k&#43;1;end

例&#xff1a;

34

break和continue

break语句用于终止循环的执行&#xff0c;即跳出最内层循环continue语句用于结束本次循环&#xff0c;进行下一次循环break和continue一般与if语句配合使用

其它流控制语句

return

return语句用于退出正在运行的脚本或函数&#xff0c;通常用在函数文件中

35

pause

暂停&#xff1a;pause

pause或pause(n)

若想强行终止正常运行的程序&#xff0c;可以使用Ctrl&#43;c

其中n是暂停的时间&#xff0c;以秒为单位若缺省&#xff0c;则将暂停程序&#xff0c;直到用户按任意键后继续

pause off屏蔽程序中所有pause的作用pause on打开pause的作用

36

首先由计算机随机产生一个[1,100]之间的一个整数&#xff0c;然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示&#xff0c;如果猜测的数大于产生的数&#xff0c;则显示Higher&#xff0c;小于则显示Lower&#xff0c;等于则显示You won&#xff01;&#xff0c;同时退出游戏。用户最多有7次机会。

编程示例

猜数游戏

例&#xff1a;

37

编程示例

x &#61; randi(100,1); %由计算机随机产生一个[1,100]的整数n &#61; 7; %有7次机会flag &#61; 1;fprintf(&#39;欢迎参加猜数游戏&#xff01;你共有%d次机会。\n&#39;, n);fprintf(&#39;请猜一个1到100之间的一个整数\n&#39;);for k &#61; 1 : nguess&#61;input(&#39;Enter your guess: &#39;);if guess xdisp(&#39;higher&#39;);elsedisp(&#39;Congratulation, You won!&#39;);flag &#61; 0; break;endfprintf(&#39;你还有%d次机会&#xff01;\n&#39;,n-k);endif flag&#61;&#61;1disp(&#39;Sorry, You lost!&#39;)end



推荐阅读
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
author-avatar
上海蓝色的梦在哪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有