界面与基础操作

界面

主页
环境
  • 设置路径:设置MatLab找寻.m文件的路径,这个路径就相当于C语言中的库函数存放的地方,只有路径中有的,或者“当前文件夹”打开的地方的文件,Matlab才可以使用,其中,“当前文件夹”就相当于你正在编辑的工程。注意,即使是你在编辑器界面打开的文件,如果不在上面的两个地方存在,那么也是无法使用的。
工作区
  • 点击工作区窗口右上角的小三角可以打开工作区的菜单,在工作区三个字上右键有同样的作用。
  • 显示变量详细信息:工作区中的变量可以显示一些其他信息,诸如大小,数据类型等,可以在工作区空白处右键进行选择,方法类似系统中文件夹中的方法。
发布
  • 在打开.m文件时会显示发布菜单,发布后形成的文件相当于项目报告。

快捷键

  • ctrl+i:将选中的命令对齐。
  • ctrl+r:将选中的代码注释。
  • ctrl+t:将选中的代码取消注释。

基础运算

  • 乘法运算:对于矩阵,点乘.*是矩阵的对应位相乘,卷积*是标准的矩阵乘法。
  • 逻辑运算:逻辑与:&&   逻辑或:||   逻辑非:~(与C语言的!不同)
  • 关系运算:与C语言一致,但是“不等于”不是!=而是~=
  • 注释符号:与C语言不同,注释是用一个%代替//,用两个百分号分别放在代码块的前后进行分块而不是注释。
  • 冒号运算
  1. 以1为间隔生成等间隔的多个数据,格式为起始数字:终了数字。例如1:3,就会生成三个数字,分别是123,存储的方式是向量(数组)。
  2. 指定间隔生成等间隔数据,格式为起始数字:间隔:终了数字。例如1:0.5:2,就会生成三个数字,分别是1.01.52.0,以向量(数组)的形式存储。
  • 数据精度:eps(数字),返回该数字与下一个能识别的比它更大的数字之间的距离。值得一提的是,精度随着数据的增大而减小,也就是说,数据越大,精度越低。而且,系统实际能识别的其实是该精度的一半。加上一个比数字的精度大一半的数值,无法识别,但是比一半再大一点点,就可以识别。
  • 合并运算:前后拼接运算[],在方括号内的多个字符串会被前后拼接在一起,作为一个字符串,或者对于矩阵,拼接为增广矩阵(行拼接),该字符串可以使用常量,也可以使用变量。加换行符的前后拼接运算{},该运算会将前后的多个字符串拼接起来,但是会在拼接处加上换行符,相当于一行显示一个字符串,同样的,可以使用变量也可以使用常量。
  • 矩阵大小运算:size(矩阵),返回该矩阵的大小,返回值实际是一个向量,依次代表各维的大小,也就是求它是一个几乘几的矩阵。

基础常量

注意,MatLab中所有符合变量名规则的常量,如果名字被当做变量使用,其值会被改变

普通常量
  • 圆周率:pi
  • 虚数单位:ij
  • 无穷大:infInf
  • 表示不是数的变量:NaNnan
  • 最后一个元素的下标:end
逻辑常量
  • 逻辑“1”:true
  • 逻辑“0”:false

基础命令

  • 清空命令行窗口clc
  • 清空工作区clear
  • 调整命令显示间距format compact (变紧凑)、format loose(变松散)
  • 关闭软件exit/quit
  • 显示帮助信息help 需要帮助的函数,例如help clc
  • 显示帮助界面doc 需要帮助的函数,例如doc clc

选择语句与循环语句

  • Switch函数语句:用法类似C语言,但是与C语言不同的是,一个Case结尾不用加“break”,而且case后面的条件可以是一个表达式,并且,函数的结束用end表示,开始不需要标志。

函数

基础函数

输入函数input
  • 使用格式:input('字符串')input('字符串','s')
  • 第一种格式的使用方法:第一种格式会将字符串中的内容显示在屏幕上,并且要求输入,在输入中寻找一个数字作为该函数的返回值。注意,MatLab中的字符串使用单引号,并且该函数有处理错误输入的能力
  • 第二种格式的使用方法:第二种格式会将第一个字符串显示在屏幕上,并且将输入的所有内容作为字符串,并且该字符串会成为本函数的返回值。
显示函数disp
  • 使用格式:disp(变量或常量)disp(['字符串1','字符串2','字符串3',...])
  • 第一种格式的使用方法:该函数将括号里填的变量或常量按照对应的格式输出到屏幕上,但是注意,只能填一个变量或常量。
  • 第二种格式的使用方法:该函数会将方括号内的所有字符串前后拼接成一个字符串显示在屏幕上,并且字符串可以使用字符串变量代替,使用其他类型的变量会导致不显示。
数字化结果函数vpa
  • 使用格式:vpa(能算出具体数值的常量或变量,保留的小数位数)
  • 使用说明:把目标算出具体数值,并保留指定位数的小数。
字符串化变量函数num2str
  • 使用格式:num2str(变量)
  • 使用说明:将变量的内容转换为字符串。
等待函数pause
  • 使用格式:pause(秒数)
  • 使用方法:程序会在该语句中死等参数所填的时间,然后继续执行。
单位矩阵生成函数ones
  • 使用格式:x = ones(第一维,第二维,第三维...)
  • 使用方法:生成一个多维的,由1组成的矩阵。
全零矩阵生成函数zeros
  • 使用格式:x = zeros(第一维,第二维,第三维...)
  • 使用方法:生成一个多维的,由0组成的矩阵。

绘图函数

描点绘图函数plot
  • 使用格式1:plot(向量)
  • 使用方法1:以该向量为纵坐标值,以向量的序号,即从一开始的正整数作为横坐标值绘制曲线。
  • 使用格式2:plot(横坐标向量,纵坐标向量)
  • 使用方法2:将序号相同的横坐标向量中的值作为横坐标,纵坐标向量中的值作为纵坐标,绘制曲线。
  • 使用格式3:plot(矩阵)
  • 使用方法3:以该矩阵的每一列为独立的纵坐标,每一列元素的序号(从零开始的自然数)为横坐标,绘制多条曲线。
  • 使用格式4:plot(横坐标矩阵,纵坐标矩阵)
  • 使用方法4:纵坐标矩阵的每一列对应一条曲线,序号对应的横坐标矩阵中的量为横坐标,纵坐标中的量为纵坐标,绘制曲线。
  • 设置坐标轴范围和纵横比:axis([xmin,xmax,ymin,ymax]),该函数的参数必须是一个向量,如该代码所示,第一个是x轴最小的坐标值,第二个是最大的坐标值。
  • 添加标题:在plot函数后面,紧跟一个函数xlabel(字符串),即可将字符串内容添加为横坐标的标题,ylabel(字符串)即添加为纵坐标的标题,title(字符串)即添加为图像整体的标题。
  • 修饰符:在正常添加参数后,在plot参数的最后添加一个字符串,根据该字符串中内容的不同会形成不同效果。例如plot(x,y,'r--'),其中r表示红色显示曲线,--表示以虚线的方式显示曲线。另外-代表实线,’.'代表只描点。
  • 图形保持:如果需要再同一个界面上绘制多条曲线,除了将它们写在矩阵里,还可以使用图形保持命令。开启的格式为hold on,关闭的格式为hold off
三维描点绘图函数plot3
  • 使用格式:plo3t(横坐标向量,纵坐标向量,竖坐标向量)
  • 使用方法:将序号相同的横坐标向量中的值作为横坐标,纵坐标向量中的值作为纵坐标,竖坐标向量中的数据作为竖坐标,绘制曲线。
  • 添加标题:在plot函数后面,紧跟一个函数xlabel(字符串),即可将字符串内容添加为横坐标的标题,ylabel(字符串)即添加为纵坐标的标题。
  • 修饰符:在正常添加参数后,在plot参数的最后添加一个字符串,根据该字符串中内容的不同会形成不同效果。例如plot(x,y,'r--'),其中r表示红色显示曲线,--表示以虚线的方式显示曲线。另外-代表实线,’.'代表只描点。
  • 图形保持:如果需要再同一个界面上绘制多条曲线,除了将它们写在矩阵里,还可以使用图形保持命令。开启的格式为hold on,关闭的格式为hold off
极坐标描点绘图polar
  • 使用格式:pplar(弧度制角度向量,长度向量)
  • 使用方法:将序号相同的弧度制角度向量中的值作为弧度值,长度向量中的值作为长度,绘制曲线。
  • 添加标题:在plot函数后面,紧跟一个函数xlabel(字符串),即可将字符串内容添加为横坐标的标题,ylabel(字符串)即添加为纵坐标的标题。
  • 修饰符:在正常添加参数后,在plot参数的最后添加一个字符串,根据该字符串中内容的不同会形成不同效果。例如plot(x,y,'r--'),其中r表示红色显示曲线,--表示以虚线的方式显示曲线。另外-代表实线,’.'代表只描点。
  • 图形保持:如果需要再同一个界面上绘制多条曲线,除了将它们写在矩阵里,还可以使用图形保持命令。开启的格式为hold on,关闭的格式为hold off
子图函数subplot
  • 使用格式:subplot(m,n,p)
  • 使用方法:这个语句的意思是,把绘图窗口分成m行n列,接下来要画的图是第p个。每次切换画图的窗格都需要调用一次这个函数。

自建函数

格式
  • 创建地点:.m文件中,一个文件对应一个函数。
  • 创建格式:文件开头应为function 返回值=文件名(传入函数的参数)
  • 格式说明:第一个单词相当于标识符,返回值应该为一个变量,文件名必须与该文件的名字一样,且必须是英文。传入函数的参数中间应该用逗号隔开,并且也应该是变量。

符号计算与数据分析

符号变量的创建与运算

符号变量(默认范围是复数域)
  • 定义:用符号代表一个变量或未知量,该符号就称为符号变量。
  • 创建格式:使用关键词syms,创建的方式类似于C语言中变量的声明,不同的是不能进行初始化,中间可以用逗号或者空格隔开。
限定符号变量的范围:使用函数assume
  • 使用格式1:assume(符号变量,范围字符串)
  • 格式说明1:限定“符号变量”的范围是符号字符串所表示的范围。
  • 符号字符串:'clear'表示复数,'real'表示实数,'integer'表示整数。
  • 使用格式2:assume(符号变量的关系表达式)
  • 格式说明2:限定“符号变量”的范围是符号关系表达式所表示的范围,另外,这里的关系表达式使用一个&|,不能使用两个,两个是逻辑关系运算
  • 混合使用:assume(符号变量的关系表达式,范围字符串)
  • 格式说明:限定“符号变量”的范围是符合关系表达式并且符合符号字符串的量。
表达式
创建
  • 创建格式:y=包含符号变量的算式,该算式就是表达式,存储时依然只占用一个单元。
整理与运算
  • 化简:使用函数simplify(表达式)就可以对表达式进行化简。
  • 因式分解:使用函数factor(表达式)就可以对表达式进行因式分解,得到的是一个向量,向量中所有元素的乘积就是原表达式。
  • 展开:使用函数expand(表达式)就可以对表达式进行展开。
  • 合并:使用函数collect(表达式)就可以对表达式进行合并同类项,使用collect(表达式,符号变量)就是对指定的符号变量进行合并同类项。
  • 合并为分式:使用函数numden(表达式)就可以对表达式合并为分式,并把分子作为向量的第一个元素,分母作为向量的第二个元素,以这个向量作为返回值。但是需要一个两个元素的向量来收集返回值,否则只返回分子。如果希望把一个小数表示成分式,则需要使用sym(小数)这样的表达式,它会直接变成分式,不过如果希望提取出分子和分母仍然要转换后使用这个函数。
  • 求反函数:使用函数finverse(表达式,求谁的反函数)即可对函数求其对应变量的反函数。注意,用该函数求出的反函数依然以“求谁的反函数”这个符号变量为变量,但是实际上它就相当于y。
  • 变成嵌套的形式:使用函数horner(表达式)即可。
  • 求复合函数:使用函数compose(外侧函数,内侧函数,外侧函数变量,内侧函数变量)即可对函数求其对应的复合函数,内侧函数会被整体代入到外侧函数变量所在的位置,不可缺省内侧函数变量。
  • 表达式变漂亮:也就是把表达式变成类似于手写格式的样式,使用方式是pretty(表达式),有时候输出里面会用#数字这样的标记来代替一块式子,在其他的地方写这一块的式子。
  • 变为手写格式:使用mupad工具,在命令行窗口直接输入mupad即可打开该工具,在该工具中输入要转换的表达式即可。
符号矩阵
  • 创建格式:y=符号向量矩阵
  • 说明:就是一个"sym"类型的矩阵而已,元素可以使符号变量,也可以是方程。

微积分和差分求和

符号微分
  • 定义:不牵扯具体的数据,对符号表达式求其微分(求导)。
  • 单变量微分(求导):使用函数diff(表达式)对表达式求一阶导数,使用函数diff(表达式,n)对其求n阶导数。
  • 多变量微分(求偏导):使用函数diff(表达式,求偏导的变量)对表达式求一阶偏导数,使用函数diff(表达式,求偏导的变量,n)对其求n阶偏导数。如果不指定求偏导的变量,系统是有一个默认优先级的,可以使用symvar(表达式)来查看表达式中各变量的优先级。使用diff(表达式,求偏导的变量1,求偏导的变量2,...)来先对变量1求偏导,再对变量2求偏导,再对…求偏导。
差分
  • 定义:作用的对象是向量,使用的函数和上面一样。
  • 一阶差分:默认是一阶后向差分,即目标和比它序号小的做差,使用diff(向量)。如果填的是矩阵,就是对矩阵的每一列分别进行一阶差分。
  • 二阶差分:diff(向量,2),进行二阶差分。diff(矩阵,2,1),对于矩阵进行二阶差分,其实1表示按行差分,如果是2就是按列差分。
符号积分
  • 定义:不牵扯具体的数据,对符号表达式求其积分。
  • 单变量不定积分:使用函数int(表达式),对表达式求不定积分,注意,最后应该人为添加常数项。
  • 多变量不定积分:使用函数int(表达式,指定的变量),对表达式的指定变量求不定积分,注意,最后应该人为添加常数项。
  • 定积分:使用函数int(被积函数,积分变量,积分下限,积分上限)即可进行定积分。注意,上下限可以使具体数字(普通定积分),也可以是符号变量(变限积分函数)。
  • 多重定积分:直接按照使用的格式对int函数进行嵌套即可。
符号求和
  • 定义:求和就是对应离散数据的积分。
  • 单变量求和:使用函数symsum(表达式,下限,上限)即可。
  • 多变量求和:使用函数symsum(表达式,求和的变量,下限,上限)即可。
数值求和
  • 使用方法:sum(向量),即可对向量中的所有元素求和。

线性代数

数据的表示

矩阵
  • 普通矩阵的输入:同行元素用逗号或空格表示,不同行元素用换行符或分号来表示。比如
a=[11,12,13;21 22 23;31 32 33]
a=[11 12 13
   21 22 23
   31 32 33]

都表示的是一个三行三列的矩阵,其第一行是11、12和13三个数据。

增广矩阵
  • 格式c=[a,b],就是将前后两个矩阵拼接为一个新的增广矩阵。

数字信号处理

数据表示

  • 时域离散信号的集合表示:本质上就是一个向量,需要先生成该信号的自变量向量,往往是一个间隔为1的正整数向量,然后利用这个自变量向量去生成对应的信号向量。
  • 单位冲激函数:dirac(t)

绘图

数字信号图函数stem
  • 使用格式1:stem(向量)
  • 使用方法1:以该向量的序号(从1开始的正整数)为横坐标,向量对应的值为纵坐标绘制图像。
  • 使用格式2:stem(矩阵)
  • 使用方法2:以该矩阵的行数为自变量,每一行中的数据为点,绘制图像。
  • 使用方法3:stem(横坐标向量,纵坐标向量)
  • 使用方法3:以横坐标向量为横坐标,对应的纵坐标向量中的值为纵坐标,描点绘图。
  • 使用方法3:stem(横坐标向量,纵坐标矩阵)
  • 使用方法3:以横坐标向量为横坐标,横坐标向量对应的纵坐标向量中的行为纵坐标,描点绘图。
  • 修饰符:'filled'表示将描的点描为实心。
三维数字信号图函数stem3

序列卷积

基础函数conv
  • 使用格式:conv(向量A,向量B)
  • 使用方法:计算向量A和向量B的序列卷积,默认两个向量都是从n=0开始的,输出的结果也是从n=0开始的。
  • 拓展用法:对于两个任意序列,先生成它们的下标序列,结果序列的起始下标为两个向量其实下标的和,终止下标为两个向量终止下标的和。对于表示信号序列内容的向量,不能让它们对齐(即长度一致),直接输入原信号即可。实际上,就算是在信号前面加零让它们对齐,也只是让结果前面同样加了几个零而已。

递推法求解差分方程

求解函数filter
  • 使用格式:y=filter(输入信号系数向量B,系统响应系数向量A,输入信号向量,初始条件向量)
  • 使用方法:求系统在初始条件下输入信号对应的系统响应的具体值,只能求n大于0的,即因果响应,比如输入信号是n从0到30,那么结果的响应也是从0到30。定义了初始条件就是求全响应,否则默认初始条件为0。输入信号的系数向量,从减的i最小的y开始数,从0数到最大的那个,系统响应系数也是一样的。
求初始条件向量的函数filtic
  • 使用格式:y=filtic(输入信号系数向量B,系统响应系数向量A,响应的初始条件,输入的初始条件)
  • 使用方法:前两个参数与上一个函数一致,响应的初始条件就是响应Y在n小于零时的各个取值,根据差分方程是几阶的来给值。输入的初始条件,一般因果系统是没有的。

傅里叶变换与Z变换

Z变换函数ztrans
  • 使用格式:ztrans(要变换的函数,哪个变量是n,变化后用哪个变量表示z)
  • 使用说明:“要变换的函数”,就是要进行变换的函数。“哪个变量是n”,就是说这个函数里面哪个变量对应于公式中的n,把这个变量作为传入函数的第二个值。“变化后用哪个变量表示z”,将来得出的结果就会是你填的这个变量。
逆Z变换函数iztrans
  • 使用格式:iztrans(要变换的函数,哪个变量是z,变化后用哪个变量表示n)
  • 使用说明:“要变换的函数”,就是要进行变换的函数。“哪个变量是z”,就是说这个函数里面哪个变量对应于公式中的z,把这个变量作为传入函数的第二个值。“变化后用哪个变量表示n”,将来得出的结果就会是你填的这个变量。