MATLAB 基础知识

科学计算与MATLAB语言
刘卫国蔡旭晖吕格莉何小贤

MATLAB 基础知识

系统环境

  • 续行符 ...
  • 设置当前文件夹
    • cd D:\_My_program\MatlabProjects
    • 或者在地址栏选择
  • 搜索路径
    • 搜索路径
    • 变量优先于关键字(重名时)
    • 程序文件的搜索先在当前文件夹中,再在文件搜索路径的文件夹中
  • 设置文件搜索路径
    • path(path, 'D:\_My_program\MatlabProjects')
    • 或者点击工具栏的主页 → 设置路径
  • 当在命令行窗口执行命令时,如果不想立即在命令行窗口中输出结果,可以在命令后加上分号

数值数据

不同类型具有不同的存储空间和表示范围(精度)

整型
  • 无符号整数
    无符号8位整数、无符号16位整数、无符号32位整数、无符号64位整数。

  • 带符号整数
    带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数。

  • 类型转换函数
    整型类型转换

浮点型
  • 单精度型(4字节)、双精度型(8字节)
  • 数值数据默认类型是双精度型
  • single()函数:将其他类型的数据转换为单精度型;double()函数:将其他类型的数据转换为双精度型。
复数型
  • 实部和虚部默认为双精度型,虚数单位用 i 或 j 来表示
  • real()函数: 求复数的实部;imag()函数: 求复数的虚部
输出格式
  • format 格式符
  • format命令只影响数据输出格式,而不影响数据的计算和存储
  • format命令
常用数学函数
  • 函数在运算时是将函数逐项作用于矩阵的每个元素上,最后运算的结果是一个与自变量同型的矩阵
  • 三角函数一般以弧度为单位,如果是以角度为单位,需在函数名后面加“ d”,以示区别
    三角函数
  • abs()可以求实数的绝对值、复数的模、字符串的ASCII码值
  • 取整函数
    • round()是按照四舍五入的规则来取整。
    • ceil()是向上取整,取大于等于这个数的第一个整数。
    • floor()是向下取整,取小于等于这个数的第一个整数。
    • fix()是固定取靠近0的那个整数,也就是舍去小数取整。
  • rem()取余,rem(365, 10)
  • isprime()判断是否是素数
  • 简单的函数示例
    简单函数

变量及其操作

  • 变量名是以字母开头,后接字母、数字或下画线的字符序列,最多63个字符
  • 变量名区分字母的大小写
  • 标准函数名以及命令名必须用小写字母
  • 预定义变量是在MATLAB工作空间中驻留, 由系统本身定义的变量
    • ans 是默认赋值变量
    • i 和 j 代表虚数单位
    • pi 代表圆周率
    • NaN 代表非数
  • 工作区用于管理变量
  • whowhos命令可列出变量信息
  • 用于保存MATLAB工作区变量的文件叫做内存变量文件, 其扩展名为.mat,也叫MAT文件
    • save mydata a x :将变量 a、x 保存在 mydata 中
    • load mydata :直接使用 mydata 中的变量

矩阵的表示

建立矩阵
  • 无需对矩阵的类型和维数进行说明
  • 将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素
  • 同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔
  • A = [1,2,3;4,5,6;7,8,9]
  • 一个大矩阵可以由已经建立好的小矩阵拼接而成(类似于分块矩阵)
建立行向量
  • 冒号表达式e1:e2:e3
    • e1 为初始值(包含在内),e2 为步长,e3为中止值(包含在内)
    • 步长缺省为1
  • linspace(a,b,n)
    • a 为第一个元素,b 为最后一个元素,n 为元素总数
    • 总数缺省为100
    • 产生的是等差数列
含多种类型元素的矩阵
  • 结构矩阵
    • 结构矩阵里的每个元素就是结构数据类型
    • 格式为:结构矩阵元素.成员名=表达式
    • a(1).x1=10; a(1).x2='liu'; a(1).x3=[11,21;34,78];
      a(2).x1=12; a(2).x2='wang'; a(2).x3=[34,191;27,578];
  • 单元矩阵
    • 各个元素可以是不同的类型
    • 单元矩阵元素用大括号括起来
    • b= {10,'liu',[11,21;34,78];12,'wang',[34,191;27,578]}

矩阵元素的引用

引用方式
  • 通过下标来引用矩阵的元素
    • A(3,2) 表示A矩阵第3行第2列的元素
    • 如果越界,将自动扩展原矩阵,并将扩展后未赋值的元素置为0
  • 通过序号来引用
    • 矩阵元素按存储
    • 矩阵元素的序号就是矩阵元素在内存中的排列顺序
    • A=[1,2,3;4,5,6],A(3)为2
  • 序号与下标是一一对应的,以 m×n m × n 矩阵 A 为例,矩阵元素 A(i,j) A ( i , j ) 的序号为 (j1)×m+i ( j − 1 ) × m + i
  • sub2ind()
    • 将矩阵中指定元素的行、列下标转换成存储的序号。
    • 调用格式为:D=sub2ind(S,I,J)
    • D 为序号,S 通常为size()函数,I 为转换矩阵的行下标,J 为转换矩阵的列下标
    • D、I、J 为同型矩阵
    • sub2ind() 示例
  • ind2sub()
    • 将把矩阵元素的序号转换成对应的下标
    • 其调用格式为:[I,J]=ind2sub(S,D)
    • ind2sub() 示例
子矩阵
  • 利用冒号表达式获得子矩阵

    • A(i,:) 第 i 行的全部元素
    • A(:,j) 第 j 列的全部元素
    • A(i:i+m,k:k+m) 第 i~i+m 行内且在第 k~k+m 列中的所有元素
    • A(i:i+m,:) 第 i~i+m 行的全部元素
  • end运算符: 表示某一维的末尾元素下标
    end运算符示例

空矩阵
  • X = []
  • 可用于删除元素
    利用空矩阵删除元素
改变矩阵形状
  • reshape(A,m,n)
    • 将矩阵重新排成 m×n m × n 的二维矩阵
    • 只改变原矩阵的行数和列数,不改变原矩阵元素个数及其存储顺序
  • A(:)
    • 将矩阵A的每一列元素堆叠起来,成为一个列向量
    • 亦可通过reshape()实现
    • 改变矩阵形状

基本运算

MATLAB的运算是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的一种特例

算数运算
  • 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算
  • 加减运算中的矩阵必须同型
  • 矩阵A和B进行乘法运算,要求A的列数与B的行数相等
  • MATLAB中有两种矩阵除法运算
    • 右除/ 和左除\(结果一般不相等)
    • 如果A矩阵是非奇异方阵,则B/A 等效于B*inv(A)A\B等效于inv(A)*B
    • inv()为矩阵的逆
  • 一个矩阵的乘方运算可以表示成A^x,要求A为方阵, x为标量
  • 点运算
    • 点运算符:.*./.\.^
    • 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型
    • 点运算示例
关系运算
  • 关系运算符
    <(小于)、 <=(小于或等于)、 >(大于)、 >=(大于或等于)、 ==(等于)、~=(不等于)

  • 当参与比较的量是两个同型的矩阵时
    比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的零一矩阵。

  • 当参与比较的一个是标量,而另一个是矩阵时
    则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

  • 判断矩阵元素是否为偶数
    判断矩阵中的偶数

逻辑运算
  • 逻辑运算符: &(与)、 |(或) 和 ~(非)
  • 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
  • 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成

字符串处理

  • 用单引号括起来的字符序列
  • 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示
  • 字符串矩阵 ch=['abcdef';'123456'];
  • 字符串倒置 revch=ch(end:-1:1)
字符串与数值的转换
  • abs()double()都可以用来获取字符串矩阵所对应的ASCII码数值矩阵
  • char()函数可以把ASCII码矩阵转换为字符串矩阵
字符串的比较
  • 关系运算符比较:
    两个字符串里的每个字符依次按ASCII值大逐个进行比较,比较的结果是一个数值向量,向量中的元素要么1,要么是0

  • 字符串比较函数

    • strcmp(s1,s2)
      用来比较字符串s1和s2是否相等,如果相等,回结果为1,否则返回0。

    • strncmp(s1,s2,n)
      用来比较两个字符串前n个字符是否相等如果相等,返回1,否则返回0。

    • strcmpi(s1,s2)
      在忽略字母大小写前提下,比较字符串s1和s是否相等,如果相等,返回1,否则返回0。

    • strncmpi(s1,s2,n)
      在忽略字符串大小写前提下,比较两个字串前n个字符是否相等,如果相等,返回1,否则返回0

其他函数
  • eval(s),把字符串 s 当作MATLAB命令来执行
  • findstr(s1,s2):返回短字符串长字符串中的开始位置。
  • strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值