Matlab学习笔记(一)

Matlab基础知识

Matlab系统环境:

变量
函数
程序文件
当前文件夹下程序文件
文件搜索路径文件夹中的程序文件

也就是说,当遇见同名的变量名和函数名时,变量名优先先把它当作变量再当做函数、程序文件进行识别。例:
sin=[1,2,3,4,5],
表示定义了名为sin的数组变量,先把sin当作一个变量。此时,sin[1]表示其第一个元素,而不表示1弧度的正弦值。若此时需要调用sin函数,需要先在工作区窗口删除sin变量。故建议取名时不要使用matlab关键字。
设置文件搜索路径:

  • 用Path命令设置文件搜索路径。如:
    》path(path,G:\matlabWork")
  • 对话框设置文件搜索路径:
    主页->设置路径

Matlab数据类型

数值数据类型

  • 整型
  • 无符号8位、16位、32位、64位整数
  • 带符号8位、16位、32位、64位整数
    • uint8():将数值数据转换为无符号8位整数
    • int8():将数值数据转换为带符号8位整数(若转换有溢出,则只保留最大值,如x=int8(129)->x=127,带符号8位整数最大值为127。
  • 浮点型
  • 单精度:4字节
  • 双精度:8字节
    • single():将其他类型数据转换为单精度型浮点数
    • double():将其他类型数据转换为双精度型浮点数
    • class():获取数据类型
  • 复数型
  • 实部:双精度
  • 虚部:双精度,单位用i或j表示
    • real():求复数实部
    • imag():求复数虚部
    • class():获取数据类型
      数值数据输出格式
  • format命令的格式:format 格式
  • 如:》format long 将输出格式设置为long格式
    format只影响数据的输出格式,而不影响数据的计算与存储
  • 常用数学函数:
  • 函数调用格式:函数名(函数自变量的值)
    • 函数的自变量规定为矩阵变量,如x=[1,2;3,4]表示2×2的矩阵;函数的自变量也可以是标量,如x=3。
    • 函数在运算时,是将函数逐项作用于矩阵的每一个元素,所以最后运算结果是一个与自变量同型的矩阵,即自变量为2×2矩阵,函数运算结果也应为2×2矩阵。
常用函数的应用
  • 三角函数
    • sin():以弧度为单位
    • sind():以角度为单位
  • 取整函数
    • fix():取数轴上靠近0的第一个整数,即舍去小数取整
    • floor():向下取整,取小于或等于这个数的第一个整数
    • ceil():向上取整,取大于或等于这个数的第一个整数
    • round():四舍五入取整
  • 取余函数
    • rem(m,n):求m除以n的余数。如果含有负数,被除数是正结果为正,被除数是负结果为负。
    • mod():求m除以n的余数。如果含有负数,除数是正结果为正,除数是负结果为负。
  • 其他函数
    • sqrt():求平方根
    • exp():求自然指数
    • abs():求实数的绝对值、复数的模、字符串的ASCⅡ码值
  • 函数应用举例
  • 求[1,100]区间内所有素数
>>x=1:100       //生成1到100内所有整数组成的向量x
>>k=isprime(x) //对x向量中所有元素进行挨个判断,返回一个与x类型相同的向量。isprime()返回值为0或1
>>k1=find(k)  //k1为k向量中非0元素的序号
>>p=x(k1)    //输出x向量中序号为k1的所有元素

字符型数据(字符串数据)

  • 字符串是用单引号括起来字符序列。Matlab中,将一个字符串当作一个行向量,向量中每个元素对应一个字符,引用方法同数值向量相同。
  • 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
  • 可以通过建立多行字符串的方式,建立字符串矩阵。但需注意各行字符数要想等,即列数要相同;当列数不等时要用空格来调整,使各行长度相等。
>>ch=['abcdef';'123456'];
>>ch(2,3)
>>ans=
    3
>>ch='ABc123d4e56Fg9';
>>subch=ch(1:5)//截取ch第1~5个字符串组成子字符串
>》subch=ABC12
>>revch=ch(end:-1:1)//将字符串倒过来重新排列
>>revch=9gF65e4d321cBA
>>k=find(ch>='a'&ch<='z')//找到小写字母的位置,赋给k
>>k=3 7 9 13
>>ch(k)=ch(k)-('a'-'A')//将k位置的小写字符转换为大写
>>ch=ABC123D4E56FG9
>>length(k)//统计小写字母的个数
ans=4
字符串操作
  • 字符串的执行
    • 格式:eval(s);s–字符串
    • 作用:将参数字符串s中的内容作为matlab命令来执行
>>t=pi;
>>m='[t,sin(t),cos(t)];'
>>y=eval(m)//执行m里t,sin(t),cos(t)三条命令,并将三个结果组成行向量输出给y
y=
   3.1416  0.0000  -1.0000
  • 字符串与数值之间的转换
    • abs()和double():获取字符串矩阵所对应的ASCII码数值矩阵
    • char()将ASCII码数值矩阵转换为字符串矩阵
>>s1='MATLAB';
>>a=abs(s1)
a=77 65  84  76  65  66
>>char(a+32)
ans=matlab
  • 字符串比较
  • 关系运算符比较:将两个字符串里每个字符按ASCII码数值逐个比较,比较结果为0或1,返回结果为一个数值向量。
  • 字符串比较函数比较
    • strcmp(s1,s2):比较两字符串是否相等,返回结果为0或1;
    • strncmp(s1,s2,n):比较两个字符串前n个字符是否相等,返回结果为0或1;
    • strcmpi(s1,s2):在忽略大小写前提下,比较两字符串是否相等,返回结果为0或1;
    • strncmp(s1,s2,n):在忽略大小写前提下,比较两个字符串前n个字符是否相等,返回结果为0或1;
  • 字符串查找与替换
    • findstr(s1,s2):返回两个字符串中,短字符串在长字符串中开始的位置;
    • strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3;

变量及其操作

变量与赋值语句

(1)变量

  • 变量本质上是内存单元的一个抽象。
  • Matlab中,变量名以字母开头,后接字母数字或下划线,最多63个字符。
  • 变量名取分字母大小写。
  • 标准函数名以及命令名必须用小写字母。

(2)赋值语句的两种格式

  • 变量=表达式
  • 表达式。即,将表达式的值赋给预定义变量ans。
  • 若在赋值语句后加分号“;”,则仅进行赋值操作,不会在窗口显示运算后变量的结果。

预定义变量

预定义变量:由系统本身定义的变量

  • ans:默认复制变量
  • i和j:虚数单位
  • pi:圆周率
  • NaN:非数。在绘图时,若想裁掉其中一部分,将要裁掉部分的数据设为NaN即可。

变量的管理

(1)内存变量的删除与修改

  • 工作区窗口右击变量
  • who和whos命令
    • who:显示驻留变量的名称
    • whos:显示驻留变量的详细信息,包括名称、大小、所占字节数以及数据类型等

(2)内存变量文件

  • 用于保存工作区变量的文件(.mat文件),也叫MAT文件。可将变量永久保留下来。
  • Matlab保存数据的标准二进制文件
  • MAT文件生成
  • Save命令:创建内存变量文件
    • 格式:save 文件名(不要.mat后缀) 变量名列表(多个以空格隔开)
    • 例如:save mydata a x //将变量a,x保存在mydata.mat文件中。
    • load命令:载入内存变量文件
      • 格式:load 文件名(不要.mat后缀)
      • 例如:load mydata

Matlab矩阵

矩阵的建立

  • 直接输入法

  • 将所有元素用中括号括起来,同一行元素用逗号隔开,不同行元素用分号隔开

  • 例如,创建一个3×3矩阵A:A=[1,2,3;4,5,6;7,8,9],

  • 利用已建立好的矩阵建立更大的矩阵

  • 例如创建一个6×6的矩阵C:A=[1,2,3;4,5,6;7,8,9];B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];则C=[A,B;B,A]。C的创建过程有点类似线性代数中的分块矩阵。
    在这里插入图片描述

  • 用实部矩阵和虚部矩阵构成复数矩阵
    在这里插入图片描述

  • 产生行向量

  • 冒号表达式:

    • 格式:e1:e2:e3
      其中e1为初始值,e2为步长,e3为终止值。省略e2表示步长为1.
  • linspace函数

    • 格式:linspace(a,b,n)
      其中a表示行向量的第一个元素,b表示最后一个元素,n表示元素总数,省略n则自动产生100个元素。

结构矩阵和单元矩阵

  • 结构矩阵(由结构数据构成的矩阵,结构数据类比高级编程语言中的结构体类型)
  • 建立方法:采用给机构矩阵元素赋值的方法
  • 格式:结构矩阵元素.元素成员名=表达式
  • 单元矩阵
  • 单元矩阵的每个元素就是不同类型的数据
  • 建立方法:直接输入,外围用大括号围起来

矩阵元素的引用

(1)通过下标引用
A(m,n)表示A矩阵第m行第n列元素,若索引超出范围,则其余元素用0补足。如:在这里插入图片描述(2)通过序号引用
Matlab矩阵元素按列存储,序号即矩阵元素在内存中的排列顺序,如:
在这里插入图片描述
以m×n矩阵为例,序号与下标对应关系为:A(i,j)=A((j-1)×m+i)。

  • sub2ind()将矩阵中指定元素的行、列下标转换成存储的序号
    • 格式:D=sub2ind(S,I,J)
      • D:矩阵元素转换过后的序号,与I,J的格式对应
      • S:矩阵的行数和列数组成的有两个元素的向量,一般用size(矩阵名)来获取。
      • I:需要进行转换的矩阵元素的行下标。可为矩阵,表示要转换多个元素,此时I和J的行列数必须相同。
      • J:需要进行转换的矩阵元素的列下标,可为矩阵,表示要转换多个元素。
      • 如:D=sub2ind(size(A),[1,2;2,2],[1,1;3,2]),表示将A(1,1)、A(2,1)、A(1,1)、A(2,3)、A(2,2)元素的下标转换为各自的存储序号。返回一个表示这四个元素序号的2×2矩阵,元素排列与I,J对应,得到[1,2;6,4]
  • ind2sub()将矩阵元素的序号转换成对应的下标
    • 格式:[I,J]=ind2sub(S,D)
      • D:矩阵元素的序号,可为包含多个元素的向量
      • S:矩阵的行数和列数组成的有两个元素的向量,一般用size(矩阵名)来获取。
      • I:转换后矩阵元素的行下标,与D的格式对应
      • J:转换后矩阵元素的列下标,可为矩阵,表示要转换多个元素。
      • 如:[I,J]=ind2sub([3,3],[1,3,5]),表示获取一个3×3矩阵,序号为1、3、5的矩阵元素的下标,得到I=[1,3,2],J=[1,1,2]

(3)利用冒号表达式作为下标获得子矩阵

既可用冒号表达式作为引用矩阵的下标,也可直接用单个的冒号作为行下标或列下标(代表全部行或全部列)。

  • 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运算符:表示某一维的末尾元素下标。
    • A(3:end,: ):表示A矩阵第3行到最后一行的所有元素

(4)利用空矩阵删除矩阵元素

空矩阵:没有任何元素的矩阵——X=[]。
如:删除A矩阵第2列,第4列所有元素
在这里插入图片描述
(5)改变矩阵的形状

  • reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

  • 注意:reshape函数只是改变原矩阵的行数和列数,并不改变原矩阵的元素个数及其存储顺序。
    在这里插入图片描述

  • A( : ):将矩阵A的每一列元素堆叠起来,成为一个列向量。

Matlab基本运算

算术运算

包括基本算术运算和点运算

基本算术运算

Matlab算术运算都是在矩阵意义下进行的。单个数据的算术运算只是矩阵运算的一种特例。
基本算数运算符:+、-、*、/(右除)、(左除)、^(乘方)

  • 加减运算
  • 要求:进行运算的两个矩阵同型,否则将报错。运算时,两矩阵对应元素相加减。
  • 一个标量也可和矩阵进行加减,即把标量和每个矩阵进行加减,得到一个新矩阵
  • 乘法运算
    • 要求: A×B,A的列数等于B的行数,此时称A、B矩阵可乘,或A、B维数和大小相容,否则将报错。
  • 除法运算
    • 如果A为非奇异矩阵,则B/A等价于B*inv(A),即B矩阵右乘A的逆矩阵,A\B等价于inv(A)*B,即A的逆矩阵右乘B矩阵。
    • 若除法运算有标量参与,则两种除法(左除和右除)结果相同。
  • 乘方运算
    • 要求:A^x,A为方阵,x为标量
点运算

点运算符:. *(点乘)、. /(点右除)、.\ (点左除)、.^(点乘方)
要求:两矩阵同型,对应元素进行相关运算。如点乘:第一个元素与第一个元素相乘,第二个与第二个相乘。

关系运算

关系运算符:<、<=、>、>=、==、~=(不等于)

  • 若两标量比较,直接比较大小,关系成立则运算结果为1,否则为0;
  • 若为两同型矩阵比较,则对两矩阵对应元素进行逐个比较,运算结果为由0,1两种元素组成的与原矩阵同型的矩阵;
  • 若标量与矩阵比较,则将标量与矩阵各个元素逐一比较,运算结果为由0,1两种元素组成的与原矩阵同型的矩阵;

逻辑运算

  • 逻辑运算符:&(与)、|(或)、~(非)
  • 在算术运算、关系运算、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低,但逻辑非运算为单目运算,它的优先级比双目运算高,如:~9 == 1,先进行逻辑非运算 ~ 9,结果为0,再进行关系运算0==1,最终结果为0。
  • 运算规则同关系运算。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值