【Matlab入门】 第一章 Matlab基础

这篇具有很好参考价值的文章主要介绍了【Matlab入门】 第一章 Matlab基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

你好!欢迎查看此系列笔记。为何说是笔记而不是教程呢,是因为这就是真真切切的我自己学习的记录,从R2022a版本到R2024a,这意味着该系列笔记可能会一直更新下去,倘若有重大更迭,我也会及时更新。观看者遇到问题,可以在评论区反馈,我争取及时交流修改。初始笔记均以R2022a版本为基准,后续补充或修改内容将以最新版作为基准。此系列笔记可能不是全站最好的,但是我会努力做到最完备。笔记采用循序渐进的方式,譬如第一章我不会讲点乘,而是在第二章矩阵后才会讲。

第一章 Matlab基础

本章从初学者角度入手,从Matlab界面,运算符,数据类型,到基本函数和数学量,基本操作。让你能看懂matlab,会常识。

一、初识界面

【Matlab入门】 第一章 Matlab基础,Matlab,matlab,经验分享,笔记

R2022a初始界面

我没有对界面做箭头标注,一是因为我懒(直言不讳,嘿嘿),二是避免许多人保存图片收藏学习的行为,知识只有学到脑子里才是知识,收藏和收集具有成瘾性。

【Matlab入门】 第一章 Matlab基础,Matlab,matlab,经验分享,笔记

R2022a菜单栏和工具栏

再回到界面来,最上方是菜单栏和工具栏(这一部分你们可能比我的格子多),包含了许多工具和附加计算器,由于本系列教程均由基本代码实现,所以你点击它的机会很少。可以看到官方将标题栏分为了6个部分,第一个部分是文件处理类,参考各类办公软件,不再赘述,注意新建或者打开的格式通常都是mat格式;第二个部分是数据的导入和导出,通常也使用mat格式文件;第三部分比较重要的是代码效率分析;Simulink不用管,暂时用不到;然后是布局和路径设置;最后是在线帮助。

向下的部分比较单调,不再用单独的图片演示。左侧显示的是当前路径,中间的附带fx的窗口是命令行窗口,fx后有两个>,我们的代码就在这两个符号之后输入;右侧上下两栏分别是工作区栏(存放变量信息的)和历史记录栏(显示你用过的命令)。

二、变量和算数运算符

1.变量

Ⅰ 命名原则

以字母或者下划线开头,但是很少用下划线开头,后面可以跟字母、数字和下划线,变量名严格区分字母的大小写(学过C语言的一定是倒背如流)。

Ⅱ 通常的赋值格式

变量=表达式。右边的表达式,小到一个数字,大到一个方程或者矩阵,引用变量前必须赋值

Ⅲ 内置变量

Matlab有一个内置的变量ans,倘若你没有定义新变量,值默认赋给ans,所以自己定义变量的时候要规避ans,以防发生混乱。本例计算了7和8的乘积并自动赋值给了ans:

>> 7*8

ans =

    56

Ⅳ 变量的查询

who命令用于查看现实工作空间中的所有变量,whos可以用于查看工作空间中变量的详细属性,使用方式如代码块所示:

>> a = 6

a =

     6

>> b = 7

b =

     7

>> who

您的变量为:

a  b  

>> whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              
  b         1x1                 8  double              

运行完这一块代码,我们看到,matlab也是有数据类型的。

Ⅴ 引用变量的方式

直接调用变量名即可,其实matlab也有类似于C语言指针和JAVA类的东西,但是目前为止无需了解。例如,计算x = 56和3.5的乘积:

>>y = x * 3.5
y = 
    196
Ⅵ 符号变量

在本系列更新到第四章(方程求解)的时候,我认识到需要补充符号变量这一概念。在 MATLAB 中,syms()函数用于定义符号变量。符号变量是一种特殊类型的变量,用于表示数学表达式中的符号和变量,而不是数值。在定义符号变量之后,我们可以使用其进行计算,例如求解方程、求导、积分、求极限、求解线性代数问题等。需要注意的是,符号计算是一种复杂的运算,通常比数值计算更慢,并且可能会导致精度损失。因此,在使用符号计算时应该注意控制计算的复杂度和精度,以避免出现不必要的错误。
简单来说,符号变量就是为求未知量而生的,倘若用普通的变量,无法达到求未知的效果。
详细的符号变量使用方法请见第四章(解方程)和第五章(微积分计算和级数展开)。

2.算数运算符

老生常谈,无非加减乘除幂运算

Ⅰ 一般运算符

加和减的优先级最低,乘和除的优先级第二,幂运算的优先级最高。除法运算中,右除\优先于左除/,同样的,优先级可以通过圆括号来改变,无需过于纠结。右除和左除需要严格区分,被除数和除数是完全相反的:

>>9/3

ans =

     3

>> 9\3

ans =

    0.3333
Ⅱ 需要特殊注意的求余运算

Matlab中没有求余运算符号,%并不代表求余。rem()和mod()函数专门用于求余(在本章第五部分再介绍)。作为一门语言,它和C类似,但是也有不同,切记不可过度联想,张冠李戴。

Ⅲ 补充内容(分号和续行符号)

分号、续行符。在上方的代码示例中,每一句代码后方没有任何符号,赋一个值,后方输出重复一次,再输入大量代码的时候,显然会占用很大篇幅,可以在语句末尾加一个分号,仅赋值,但不求屏幕输出;续行符为三个点:… 用于屏幕换行的接续输入,接下来是代码展示:

>> a = 6;
>> b = 123 + 245 + ...
12345

b =

       12713

三、赋值运算

“=”赋值运算符,介绍变量的时候已经提到过。我们这里还要介绍递归赋值这个特殊用法,如代码块所示:

>> x = 86;x = x + 4

x =

    90

四、分数的不同表达方式

作为初学者,我不会详细介绍Matlab中无关紧要的数值类型,这里仅对分数的表达方式做一定的区分,主要是单精度(4位)、双精度(15位)和分数形式:

1. 单精度形式

>> format short;pi

ans =

    3.1416

2.双精度形式

>> format long;pi

ans =

   3.141592653589793

3.分数形式

>> format rat;pi

ans =

     355/113  

4.我为什么使用format函数来介绍小数类型

format函数主要用于设置输出格式,可以将数值用特定的方式来展示,所以此处用了format 格式;变量名的代码来展示不同的小数格式。根据官网,格式处的类型还可以为hex(16进制格式)、自定义的格式,在此不再介绍,感兴趣可自行研究。

五、基本数学量和基本函数(极其重要,务必掌握)

1.上文中出现的pi

圆周率,使用时直接调用。

2.自然指数

格式为exp(x),处为待定数,表示自然指数的x次方。特殊的,matlab中输入e不可直接输入,而要输入exp(1),如代码块所示,做个简单的运算验证一下:

>> log(exp(1))

ans =

       1       

3.对数

格式为log(x) ,这是以e为底的对数函数。以其它为底时的格式:log底(x),譬如有log2(2)=1。

4.平方根

格式为sqrt(x),x可以为负数,matlab会输出复数形式。

5.三角函数

和现实一样,直接按照现实的方式来表示,但是要注意反三角函数前缀不是arc,而是a。

6.inf和NaN

前者表示无穷大,除以0或者溢出等运算会产生inf,其次在变上限积分的运算中非常有用;后者表示既不是实数也不是复数的非数字值,比如0除以0或者inf除以inf的时候会产生NaN。

7.绝对值

函数为abs(),括号里内容为现实中绝对值号里的东西。

8.求余专用函数

rem(m,n)表示m除以n所得的余数,rem(x,0)的值是多少呢,你们自己想一下。还有mod(m,n)函数,也表示m除以n所得的余数。这两个函数有何区别呢。主要体现在符号上,rem的结果正负会随着m的正负变化而变化,对于n的符号变化爱答不理。而mod正好相反。

9.复数的表示

和现实一样,直接在虚部补个i。i和j都默认为虚数单位,自定义变量的时候注意避开。

10.disp函数(窗口显示函数)

disp 函数用于在命令窗口中显示数据。它可以接受各种类型的输入数据,包括数字、字符向量、字符数组、逻辑值、结构体、单元格数组、函数句柄等等(其中很多对于初学者都没必要了解)。
该函数的输出形式是根据输入数据的类型和大小自动确定的。对于单个数字或字符向量,输出结果是一行文本。对于多行文本或大型数据结构(譬如矩阵),输出结果可能会跨多行,并自动换行以适应命令窗口的大小。来个代码块试试看:

>> x = [1,2,3;4,5,6;7,8,9];y = 11;disp(x),disp(y)
     1     2     3
     4     5     6
     7     8     9

    11

注意disp函数的输入内容是单一的,不能输入多个同时输出。

11.窗口小命令(软件交互)

clc函数清空命令行窗口内容,clear清除所有变量,close all关闭所有的figure窗口(譬如生成的函数图像窗口,第三章会讲到),clear all:清除工作空间的所有变量、函数。clear 变量名还可以清楚指定的变量;esc按钮:清除你正在编辑的命令行;按下tab:补全代码;quit:关闭matlab。

六、小技巧:极其方便的修正手法

有时输入表达式发生错误,当按下回车后认识到需要修改其中一点代码,只需要方向键向上移动,此时会自动补全上方的历史代码,修正错误,然后按下回车重新运行即可。

七、代码注释方法

1.我们为什么要注释代码

作为一个程序员(只要你使用的是高级语言),编写代码时,最好添加描述代码的注释。注释有助于其他人员理解代码,并且有助于我们在稍后返回代码时再度记起这段代码的作用。在代码开发和测试期间,还可以使用注释来注释掉任何不需要运行的代码。在实时编辑器中,可以在代码前后插入文本行来描述过程或代码。
由于matlab语言和其他高级语言的相似性,代码移植时展现的功能性说明显得必不可少。所以我们不光要做注释,还要做的好。同样的,matlab的代码注释也分单行和多行。

2.单行注释方式

既可以单起一行专门放注释,还可以在某一句代码后方跟一句注释,符号为%,单行注释内容在该符号的右侧添加:

>> % 定义变量x和y
>> x = 5;y = 6 % 定义完毕

3.多行注释方式

还是使用百分号,但是为了续行输入我们的注释,还需要用大括号括起来,格式为%{…内容…%}

>> %{
这是一段代码注释
“Hello world!%}

在为什么要添加注释的部分中,还提到了可以利用注释将不运行的代码"封装起来"。也是利用了多行注释的方式:

a = magic(3);
%{
sum(a)
diag(a)
sum(diag(a))
%}
sum(diag(fliplr(a)))

3-5行的代码都不会被执行,如有运行需要,直接放出来即可。更加复杂的代码注释方式我不再介绍,对于语言学习者我更提倡直接输入注释代码。

八、文件基础(包括导入、保存等)

1.保存

Ⅰ 保存mat格式文件(位置参考第一部分的界面介绍)

  • 找到变量菜单区
  • 选择“保存工作区为”
  • 输入文件名点击保存

Ⅱ 变量的保存:使用命令save 文件名 变量名列表将变量存入指定的mat文件中。譬如:

>>save 'monosaka.mat' a b

或者:

>>save ('file1.mat','p','q')

2.读取

Ⅰ 从 excel 文件读取数据

>> A = xlsread('monosaka.xlsx')

此处的A可以为数,也可以为数组或者矩阵

Ⅱ 读入txt文本(这个我没有试过,权当了解),以下三条代码为具体格式。

>>[A,B,C,...] = textread(filename,format)
>>[A,B,C,...] = textread(filename,format,N)
>>[...] = textread(...,param,value,...)

Ⅲ 变量的读取:

>>load(filename,'-mat',variables)

本章节更新记录

2024.2.13首次发布。
2024.2.14一次修订:优化了目录,便于查找。
2024.2.16二次修订:添加了符号变量内容和代码注释方法、disp显示函数。

[1]:Matlab公司Mathworks官网-帮助中心文章来源地址https://www.toymoban.com/news/detail-828173.html

到了这里,关于【Matlab入门】 第一章 Matlab基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

    大家好!最近有很多朋友询问我关于 Matlab 的使用,于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说,Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么,为什么 Matlab 这么受欢迎呢? MATLAB 是美国MathWorks 公司自2

    2024年02月10日
    浏览(43)
  • 第一章:SpringBoot基础入门

    Spring 能做什么 Spring 的能力 Spring 的生态 网址: https://spring.io/projects/spring-boot 覆盖了: Web 开发、数据访问、安全控制、分布式、消息服务、移动开发、批处理等。 Spring5 重大升级 响应式编程 内部源码设计 基于 Java8 的一些新特性。 为什么用 SpringBoot ​ Spring Boot makes it eas

    2024年02月12日
    浏览(48)
  • 《现代永磁同步电机控制原理及MATLAB仿真》第一章·三相永磁同步电机的数学建模

        目录——三相永磁同步电机的数学建模 Clark变换与仿真建模 Park变换与仿真建模 同步旋转坐标系下的数学建模 静止坐标系下的数学建模​编辑 Matlab自带三相PMSM的仿真模块设置     三相永磁同步电机是一个复杂的非线性系统,为了更好的设计先进的PMSM控制算法,因此需

    2024年02月04日
    浏览(39)
  • 计算机网络原原理学习资料分享笔记---第一章/第六节(为有梦想的自己加油!)

    第六节 计算机网络与 因特网发展简史 第六节 计算机网络与因特网发展简史 知识点 1 计算机网络与因特网发展简史 第六节 计算机网络与因特网发展简史 3 、 1972 年底, ARPAnet已经发展到 15 个交换结点。 4 、 20 世纪 70 年代早期与中期,除了ARPAnet之外,还诞生了许多其他分

    2024年04月27日
    浏览(47)
  • 通用的改进遗传算法求解带约束的优化问题(MATLAB代码精讲、实际工程经验分享)

    在对多约束、非线性问题的求解上,传统线性规划等方法往往无法有效求解(求解时间过长、无法处理非线性约束等。 进化算法是一类强有力的工具,已经在多个领域有了较为成功的应用。然而,在利用遗传算法、粒子群等等进化算法求解实际的优化问题时,还存在许多困难

    2023年04月19日
    浏览(87)
  • 《MetaGPT智能体开发入门》学习笔记 第一章第二章

    使用从 - 通过github仓库获取MetaGPT 代码拉下来后在config文件夹中配置chatGPT key 使用的python环境为3.9.2 metaGPT代码下载后在metagpt文件夹中找statup.py文件,运行以下命令,我是没有成功可能是chatgpt没钱 智能体 = LLM+观察+思考+行动+记忆 多智能体 = 智能体+环境+SOP+评审+路由+订阅+经

    2024年01月17日
    浏览(59)
  • 老杜Java零基础视频笔记-第一章 学前准备(动力节点)

    为什么使用截图工具 在听课的过程中,有的时候老师操作的比较快,通过截图的方式将老师的操作保存下来,以便后期的操作。另外截图之后的图片也可以用于笔记的记录,在笔记当中最好采用图文并茂的方式,这样更加利于知识的回顾。 使用哪个截图工具 snipaste 免费 免安

    2024年02月07日
    浏览(62)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(62)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    对于每一门编程语言来说,数组(Array)都是重要的数据结构之一,主要用来存储数据类型相同的元素。Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new,而定义变长数组时,则需要导包 import scala.collection.mutable.ArrayBuffer 。 数组(Array)主要用来存储

    2024年02月10日
    浏览(64)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包