一、MATLAB 基础知识

0. 简介

MATLAB即Matrix Laboratory矩阵实验室的意思。

数据可以以其他方式导入软件,比如文件,其他应用程序和设备。数据导入后可以利用内置的工程和数学函数以及图形和可视化功能对其进行研究和分析,MATLAB支持向量和矩阵运算,这些运算是工程和科学问题的基础。MATLAB每次只能执行一个命令,提供即时结果,这样能够使用多种探究方法,并且通过迭代获得最佳解决方案。或者可以创建脚本和函数以实现重复使用并且自动化实现工作方式。文件可共享,可作为单独文件,集成到excel等其他软件中的组件。或者可作为使用MATLAB语言子集的算法的可移植C代码。

MATLAB特点:

  1. 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;
  2. 具有完备的图形处理功能,实现计算结果和编程的可视化;
  3. 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;
  4. 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

一、MATLAB 基础知识

1.1 MATLAB系统环境

主窗口:程序窗口,包括嵌入窗口

当前文件夹窗口:当前文件,程序操作在当前路径。可通过cd命令或鼠标设置

命令行窗口:输入命令并显示执行结果。

">>":命令提示符,表示MATLAB处于准备状态可以接受并执行MATLAB命令。输入命令,按回车就可以执行命令并显示结果。

"…":续行符,把下一行当作本行继续。

工作区空间:变量的显示和操作(有点像R,但可以改)

MATLAB的搜索路径:1变量->2内部函数->3程序文件(先当前文件路径再文件搜索路径)

文件搜索路径:1. 用path命令设置。2. 用对话框设置路径

1.2 MATLAB数值数据

分类:

1)整型,有八种类型:无符号8位整型数据范围:0~2^8-1. int8,int16,int32,int64,uint8,uint16,uint32,uint64

2)浮点型:单精度4个字节,双精度8个字节。默认双精度型。可用single()\double()进行转换。

3)复数形。虚部单位用i或j来表示。real()函数求实部,imag()函数求虚部。

用format命令设置输出格式: format 格式符

>> format long
>> 50/3
ans=
	16.66666666666666666
>> for,at
>> 50/3
ans=
	16.6667

format命令只影响数值的输出格式,不影响数值的计算和存储

常用数学函数的应用:

  1. 三角函数中以角度为单位的函数就在函数名后面加"d",如sind()
  2. abs函数可以求实数的绝对值,复数的模,字符串的ASCII值。
  3. 用于取整的函数有round(四舍五入)\ceil(向上取整)\floor(向下取整)\fix(舍弃小数即向0取整)
  4. rem(x,y)取x除以y的余数。isprime()检验是否素数。find()返回向量为真的元素索引

1.3 变量及其操作

变量名:字母开头,后接字母\数字\’_’。区分大小写

赋值: 1. 变量=表达式。(如果后接分号,仅赋值,不显示表达式计算结果) 2. 表达式(自动赋给MATLAB预定义变量"ans",变量结果会在命令行显示出来)

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

  • ans是默认赋值变量
  • i,j是虚数单位
  • pi代表圆周率
  • NaN代表"not a number"

变量的管理:

  1. 内存变量的删除和修改可以再工作区完成
  2. 用who和whos显示再工作区驻留的变量清单。

内存变量文件:用于保存MATLAB工作区变量的文件,扩展名为.mat

  • save命令:创建内存变量文件

    save mydata a x

    表示把变量a,x保存再mydata.mat中

  • load命令:装入内存变量文件

1.4 MATLAB矩阵的表示

矩阵的建立:

  • A=[1,2,3;4,5,6;7,8,9] (元素直接创建)
  • B= [A;-A] (矩阵创建矩阵)
  • C =A-A*i (复数矩阵)

冒号表达式:产生行向量

  • 初始值:步长=1:终止值
  • linspace(a, b, n=100) a为第一个元素,b为最后一个元素,n为元素总数

结构矩阵:用法类似C语言结构体。结构矩阵元素.成员名 = 表达式

a(1).x1 = 10;
a(1).x2 = 'liu';
a(1).x3 = [ 10 , 1 ; 3 , 5 ];

a(2).x1 = 9;
a(2).x2 = 'wang';
a(2).x3 = [ 9 , 1 ; 3 , 5 ];

a(3).x1 = 8;
a(3).x2 = 'zhang';
a(3).x3 = [ 8 , 1 ; 3 , 5 ];

一、MATLAB 基础知识_第1张图片
单元矩阵:建立单元矩阵和一般矩阵相似,直接输入久可以了,知识单元矩阵元素用大括号括起来。

b = { 10 , 'liu'  , [ 10 , 1 ; 3 , 5 ] ;
       9 , 'wang' , [  9 , 1 ; 3 , 5 ] ;
       8 , 'yang' , [  8 , 1 ; 3 , 5 ] };

一、MATLAB 基础知识_第2张图片

1.5 矩阵元素的引用

系统里按列存取元素。

  1. 通过下标引用,用圆括号()括起来。如A(3,2)
    若超过原范围,便添加0自动扩展原矩阵

  2. A(n)表示矩阵A第n个元素,第几个按列先排

  3. sub2ind()和ind2sub()将矩阵元素的序号和下标

    A = [1:3;4:6]
    D = sub2ind(size(A),[1,2;2,2],[1,1;3,2])
    D = [1,2
    	6.4]
    
    

    D = sub2ind(S,I,J)

    [I,J] = ind2sub(S,D)

    D:序号

    S:行数和列数组成的向量

    I:转换矩阵元素的行下标(可为矩阵)

    J:转换矩阵元素的列下标(可为矩阵)

利用冒号表达式获得子矩阵,子矩阵是指由矩阵种的一部分元素构成的矩阵。e.g. A(i,m:s:n) 先(m:s:n)然后带入

end运算符:表示某一维的末尾元素下标,相当于某些语言里的’-1’

删除矩阵元素:直接赋值为’[]’,赋值为没有任何元素的空矩阵。赋值部分矩阵可改变原矩阵形状。

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

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

1.6 MATLAB基本运算

在算数运算、关系运算和逻辑运算中,算数运算优先级最高,逻辑运算最低

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

    基本算数运算符:+ , - , *, \ , / , ^(乘方) 。加减乘、标量除、乘方算法和线代一样。若A,B非奇异方阵, B/A = B * inv(A), A\B = inv(A)*B。

    奇异方阵:对应行列式为0。inv():矩阵的逆

  • 点运算:两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。有 .* , ./ , .\ , .^ 。

  • 关系运算:<,==,~=(不等于) 。当两个比较量是标量时,直接比较,TRUE返回1,FALSE返回0。当比较的量时两个同型矩阵,比较是按相同位置逐一进行比较,返回同型01矩阵。当一个标量和一个矩阵比较时,标量与矩阵元素逐一比较,返回与矩阵同型的01矩阵。

  • 逻辑运算:&(与),|(或) ,~(非)。对元素逐个进行比较。真返回1,假返回0

  • 快速逻辑运算:&&和||,操作数必须额能够转化为逻辑标量值。

运算符优先级:您可以构建使用算术运算符、关系运算符和逻辑运算符的任意组合的表达式。优先级别用来确定 MATLAB® 计算表达式时的运算顺序。处于同一优先级别的运算符具有相同的运算优先级,将从左至右依次进行计算。下表显示了 MATLAB 运算符的优先级规则,顺序从最高优先级别到最低优先级别

优先级 运算符
1 括号 ()
2 转置 (.')、幂 (.^)、复共轭转置 (')、矩阵幂 (^)
3 带一元减法 (.^-)、一元加法 (.^+) 或逻辑求反 (.^~) 的幂,以及带一元减法 (^-)、一元加法 (^+) 或逻辑求反 (^~) 的矩阵幂。
4 一元加法 (+)、一元减法 (-)、逻辑求反 (~)
5 乘法 (.*)、右除 (./)、左除 (.\)、矩阵乘法 (*)、矩阵右除 (/)、矩阵左除 (\)
6 加法 (+)、减法 (-)
7 冒号运算符 (:)
8 小于 (<)、小于或等于 (<=)、大于 (>)、大于或等于 (>=)、等于 (==)、不等于 (~=)
9 按元素 AND (&)
10 按元素 OR (|)
11 短路 AND (&&)
12 短路 OR (||)

1.7 字符串处理

  1. MATLAB的两种基本数据类型,除了数值型数据还有字符型数据(字符串)。

    在MATLAB中,字符是用单引号括起来的字符序列。MATLAB把一个字符串当作一个行向量,引用方式和数值向量相同。字符串中的单引号要用两个单引号表示。

    字符串的执行:

    eval(s): 把字符串s当作命令执行

    abs(s): 把字符串转换为对应的ASCII码

    char(i):把ASCII码转换为对应的字符。

    关系运算符:对字符串里每个字符依次按ASCII值比较大小,返回01数值向量

    字符串比较函数:

    strcmp(s1,s2):比较字符串s1和s2是否相等,相等返回1,否则0.

    strncmp(s1,s2,n):比较s1、s2前n个字符是否相等。

    strcmpi(s1,s2)strncmpi(s1,s2,n) 前面两种函数忽略大小写版本。

    字符串的查找与替换:

    findstr(s1,s2):返回短字符串在长字符串中的开始位置向量。

    strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为s3。

你可能感兴趣的:(matlab,数学建模)