当前位置:   article > 正文

预备篇——MATLAB的基础知识

matlab

MATLAB是一款,由mathworks开发的高级技术计算环境和编程语言,常用于数据的可视化,高级程序操作,深度学习等方面,其最为出众的特性是可以展现矩阵,而不需要类似于Python借助库函数来实现。不仅于此,MATLAB还有众多的工具箱以支持不同类型工程的使用,包括航空航天工程、深度学习、电子电路等。
笔者通过根据电子工业出版社出版的《MATLAB使用教程(第五版)》所述内容,并加以自己的理解,所撰写本专栏内容,逐步由浅至深探索MATLAB的实用功能。
以下,先介绍一些,在MATLAB里最为基础的实用知识,有的地方可能会借助与Python得比较来进行讲解。

一、数据类型

在MATLAB中一共有十五种基本的数据类型,常用的包括数值型(整型、浮点型)、字符串型、逻辑型等。

(一)数值型

数值型可以分为整型和浮点型两种,顾名思义,即可以笼统看做整数和小数。

(1)整型

MATLAB提供了八种整型类型,可以分为无符号整数和符号整数两大类,每一类有四种,每一大类内的区别在于表示范围和字节数的不同。

  • 无符号整数用于表示非负整数,只能包含正整数或零,没有负号。在内存中,无符号整数没有存储符号位,而是都用于存储数值。在计算机中,无符号整数的范围是从0到最大值,取决于数据类型的位数。例如,8位无符号整数(uint8)的范围是从0到28-1。
  • 有符号整数用于表示正整数、零和负整数。它包含一个符号位来表示正负号。在内存中,有符号整数的位表示被分配为符号位和数值位。符号位用于表示正负号,而数值位用于存储实际数值。在计算机中,有符号整数的范围是从最小值到最大值,取决于数据类型的位数。例如,8位有符号整数(int8)的范围是从-27到27-1。
    在这里插入图片描述
(2)浮点型

浮点数是用来表示小数或带有小数部分的数值的数据类型,包括单精度浮点数和双精度浮点数。

  • 单精度浮点数(single),使用 32 位(4 字节)内存来存储一个浮点数。它可以表示大约 6 到 7个有效数字,并具有较小的范围。通常以科学计数法形式表示,如 3.1415e-5。
  • 双精度浮点数(double),使用 64 位(8 字节)内存来存储一个浮点数。它可以表示大约 15位有效数字,并具有较大的范围。同样以科学计数法形式表示。

在MATLAB里,默认的类型为双精度型,当你输入数据是,均为double型

a=100
b=0
c=12.0 
%a、b、c的类型均为double
  • 1
  • 2
  • 3
  • 4

在实际使用中,double和single型主要区别在于运算速度和存储空间的占用,如果不考虑这两个因素,二者基本可以混用,即以系统默认的double型基本可以满足大部分需求。

(3)字符型

字符型数据用于表示文本或字符串,一般使用单引号括起来,字符使用ascll码形式存放(即可以通过修改ascll码来间接修改字符串)。
在r2016b版本之后,实现了类似Python中字符串处理的一种字符串类型,用双引号括起来,可以实现切片和位置访问。

(4)逻辑型

在MATLAB中,逻辑型数据可以表示为true和false,每个逻辑型占1字节
使用logical函数可以将数值型转换成逻辑型,所有的非0整数和浮点数均可转换为1(true),0可以转换为0(false)。

a=11.1
b=0
c=logical(a)
d=logical(b)
%c =1,类为logical,a的类仍为double
%d =0,类为logical,b的类仍为double
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、变量

与Python类似,MATLAB也有相类似的变量命名规则,以及一些因为定义而具有特殊含义的特殊变量,因为保留字而无法定义为变量的特殊名等。

(一)变量的命名规则

  • 变量名由字母、数字和下划线组成,变量名区分大小写。
  • 变量名必须以字母开头,变量名不能包含空格或其他特殊字符,如@、$、*等。
  • 变量名长度限制为63个字符。
  • MATLAB保留关键字不能用作变量名,如if、else、for、while等。

(二)特殊变量

  • ans:该变量用于存储最近一次执行的表达式或函数调用的结果。当没有为结果指定变量时,MATLAB将自动将结果存储在ans变量中。
  • pi:表示圆周率(π)的常数。可以通过输入pi来访问。
  • i和j:分别表示复数单位虚数单位。i代表虚数单位,而j在工程领域中通常用于表示虚数单位。
  • eps:该变量表示在浮点运算中的机器精度。eps给出了一个很小的正数,用于处理可能出现的舍入误差。
  • Inf和NaN(nan):Inf表示正无穷大(如1/0),-Inf表示负无穷大,NaN表示不是一个数字(非数,如0/0,∞/∞,0*∞)。这些特殊值通常用于表示计算结果超出范围或无效的情况。
  • nargin和nargout:nargin表示函数调用时传入参数的数量,nargout表示函数输出参数的数量。这两个变量可用于在函数内部根据输入和输出参数的数量进行条件判断。
  • realmin和realmax:分别表示最小的可用正实数和最大的可用正实数。

例:

2*3 %(当没有给出变量值时,计算的结果自动赋给名为ans的变量)
%ans=6
a=2*pi
%a=6.2832
a=1+2j;
b=a*a
%b=-3+4i
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这些特殊变量在MATLAB中有着特定的含义和用途,但在实际编程中应谨慎使用,避免覆盖其默认功能。

(三)变量管理

1.变量清除

clear all %清除所有变量
clear q   %清除去变量q
clear     %清除所有可以清除的变量
  • 1
  • 2
  • 3

2.变量查看

who a  %查看变量a的值
who    %查看工作空间中已经驻留的变量名
whose a%查看变量a的大小、字节数、数据类型等信息
whose  %查看工作空间中已经驻留的变量名及其的大小、字节数、数据类型等信息
  • 1
  • 2
  • 3
  • 4

3.清空

%1.清空屏幕
clc
%清除命令行窗口而不清除变量

%2.清空图形
clf
%只清除图形窗口的图像
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(四)常数

在MATLAB中数据采用十进制表示,在上文中提到的数值型的基础上,引申出了数组和矩阵的概念,同时也引申出了科学计数法的方法,在MATLAB中,较大的数字一般都使用科学计数法进行显示和储存。
合法的数值表示不仅有-2、100、1.1等,还有科学计数法2.56e-56(2.5x10-56)、4.68e204(4.68*10204
复数的表示在上文中特殊变量中已经提及,使用特殊变量i或j辅助表示:

a=1+2j
a=1+2*j%当虚部为常量时,*号可以省略
  • 1
  • 2
b=2
a=1+b*j%当虚部为变量时,必须要加*号
  • 1
  • 2

还有一种方式,利用复数坐标系的极坐标方法计算,公式为

a=r*exp(i*θ)%r为极径,exp(i*θ)代表e的i*θ次方,θ为相位角
  • 1

可以用real、imag、abs、angle四个函数分别得出一个复数的实部、虚部、幅值和相角
幅值即为模长,相角计算单位为rad,如果想得到角度,可以通过angle(变量)*180/pi来实现

三、矩阵

在学习线性代数及工程数学的进程中,我们会学习到矩阵、行列式、方阵、向量、标量等概念,在编程语言中,MATLAB是一种可以直接展示矩阵的一种语言,这也是它的特性之一。(Python需要导入numpy库)

(一)基础概念

  • 标量是 MATLAB 中最基本的数据类型,表示单个的数值。它可以是整数、浮点数或复数。例如,x = 5就是一个标量,其中的 5 是一个标量值。标量可以被视为大小为 1x1 的矩阵
  • 向量是由一列按顺序排列的数值组成的一维数组。** 向量可以被视为大小为 1* n 或者 n1 的矩阵**,向量可以是行向量(1* n)或列向量( n* 1 )。行向量是一个包含了多个元素的一行数组,而列向量则是一个包含了多个元素的一列数组。MATLAB 中,向量可以表示为 [x1, x2, …, xn] 或者是使用冒号运算符定义一个范围,例如 x = 1:5 就是一个从1 到 5 的行向量。
  • 矩阵是一个二维数组,由行和列组成。在 MATLAB 中,可以使用方括号表示矩阵,每一行用分号分隔,例如 A =[1, 2, 3; 4, 5, 6] 定义了一个 2x3 的矩阵。矩阵可以进行各种线性代数运算,例如矩阵乘法、转置、求逆等。向量和标量都可以视作矩阵的特殊情况,0*0矩阵为空矩阵([])
  • 数组是 MATLAB中的多维数据结构,它可以包含标量、向量或矩阵作为其元素。数组可用于表示更高维度的数据集合。例如,在 MATLAB中,可以使用方括号定义一个二维数组,其中每个元素可以是标量、向量或矩阵。所以矩阵实际上也是数组的一种

简单来说,标量是单个数值(1* 1),向量是按顺序排列的一维数组(1* n、n* 1),矩阵是由行和列组成的二维数组(n* n),而数组则可以包含标量、向量或矩阵,并且可以是任意维度的数据结构(n* n* n*……)

四、计算

在MATLAB中,数学计算可以分为数值计算和符号计算,数值计算中的表达式必须事先被赋值,而符号计算中的表达式可以对未赋值的符号对象(可以是常数、变量、表达式等)进行运算和处理,符号运算是MATLAB数值处理功能的自然扩展,该项会在后续中详细介绍。

五、操作页面

此处可以参考另一位博主的文章所述MATLAB操作界面详解以及基础指令

在MATLAB中,如果一个数据的小数位数很多,其显示形式会根据当前的设定变化而变化,一般情况下,MATLAB的预设为format(format short)格式(预设可以更改),即保证小数点后四位有效,大于1000的实数,用5位有效数字的科学计数法显示。
除此之外,MATLAB一共有十多种数值显示的format格式,可以直接用于在命令行输入修改数据显示格式:

  • format short / format:默认格式,显示为科学计数法或定点小数。3.14159显示为3.141590,3141.59显示为3.1416e+003
  • format short e:以科学计数法的形式显示,指数部分为 “e”。pi显示为3.1416e+00
  • format short g:根据数值大小自动选择使用定点小数或科学计数法,精度较低。
  • format short eng:工程短格式,类似于short g,最少五个数字,指数三位,
  • format long:显示更多位数的小数部分。
  • format long e:类似于 long 格式,但以科学计数法的形式显示,指数部分为大写字母 “e”。
  • format long g:类似于 short g 格式,但显示更多位数的小数部分。
  • format long eng:工程长格式,类似于long g,最少16个有效数字,指数三位
  • format bank:显示两位小数的货币格式。
  • format rat / format rational:以分数形式显示结果。
  • format hex:以十六进制形式显示结果。
  • format +:正数、负数、零分别表示为+、-、空格显示
  • format compact:以紧凑的格式显示结果,减少显示的空白行数
  • format loose:以宽松的格式显示结果,在显示结果时增加空白行数,使结果更易读

在MATLAB中,也会涉及到一些与其他编程语言用法不尽相同的标点符号,一下简略介绍一些常用的标点符号的作用:

  • 空格:用于分隔不同的语句、变量或运算符,并提高代码的可读性。
  • 逗号:用于分隔矩阵或向量中的行和列,或者作为函数参数之间的分隔符。
  • 点号:一般用于做小数点,也有时用于逐元素操作,例如逐元素相乘、逐元素开方等。也用于访问结构体中的字段或调用对象的属性和方法。
  • 分号:用于分隔代码的不同语句,并抑制结果的显示。
  • 冒号:用于创建等差数列或提取矩阵的子集,指定范围。它的用法包括 start:step:end 或 start:end。
  • 百分号:用于注释代码,表示注释符号后面的内容不会被执行,提供注释或解释。
  • 单引号:用于创建字符数组或字符串,也用于表示转置操作或复数的虚部。
  • 圆括号:用于定义函数、调用函数、设置优先级、创建元组等。
  • 方括号:用于创建矩阵或向量,索引和访问矩阵的元素。
  • 花括号:用于创建单元数组、访问和修改单元数组的元素。
  • 下划线:可用作占位符,表示忽略变量或输出结果。
  • 续行号:(省略号)用于将一行代码分割成多行,提高代码的可读性。
  • @ :用于创建匿名函数或句柄,允许在不命名的情况下定义和使用函数。
  • ~ :用于忽略函数的返回值或循环中不需要的变量,避免编译器警告。

六、总结

以上便是本篇所想要宽泛地介绍的关于MATLAB操作基础的一些预备知识,后续还将撰写更为详细的MATLAB程序设计相关文章

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/837533
推荐阅读
相关标签
  

闽ICP备14008679号