1.概论
Matlab有五大通用功能:数值计算功能(Nemeric),符号运算功能(Sybolic)(当要求Matlab进行符号运算时,它就请求Malpe计算并将结果返回到Matlab命令窗口),数据可视化功能(Graphic),数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)
2.Matlab简介
1.指令行的编辑
Matlab是一种交互式语言,随时输入指令,即时给出运算结果。
2.入门演示
intro↵ demo↵
3. 帮助
1.
helo↵ 帮助总览 help elfun↵ 关于基本函数的帮助信息 helo exp↵ 指数函数exp的详细信息
** 2.lookfor 指令 **
根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的指令
例如:
lookfor interal↵ 查找有关积分的指令 lookfor fourier↵ 查找能进行傅立叶变化的指令
3.超文本格式的帮助文件
在matlab中,关于一个函数的帮助信息可以用doc命令以超文本的方式给出。
如: doc↵ doc doc↵ doc eig ↵ eig求矩阵的特征值和特征向量
4.简单的矩阵输入
1.要直接输入矩阵时,矩阵元素用空格或逗号隔开;矩阵行用分号“;”隔开,整个矩阵放在方括号"[]"里
A=[1,2,3,4,5,6,7,8,9]↵
说明:指令执行后,矩阵A被保存在Matlab的工作间中,以备后用。如果用户不用clear指令清除它,或对它进行重新赋值,那么该矩阵会一直保存在工作间中,知道本Matlab指令窗口关闭为止。
2.矩阵的分行的输入
A=[1,2,3 4,5,6 7,8,9]
5.语句与变量
1.Matlab语句有两种最常见的形式
i)表达式
ii)变量=表达式
2.特殊变量
- ans 用于结果的缺省变量值
- pi 圆周率
- eps 计算机的最小数
- flops 浮点运算次数
- inf 无穷大 如1/0
- NaN 不定量 如0/0
- i(j) i=j=根号(-1)
- nargin 所用函数的输入变量数目
- nargout 所用函数的输入变量数目
- realmin 最小可用正实数
- realmax 最大可用正实数
6.数据结构:向量,矩阵,结构数组和细胞数组
1.向量的转置
z=[1+j,2+pi*i,-sqrt(-1)]' z= 1.000-1.000i 2.000-3.1416i 0 + 1.000i
当对复数向量进行转置操作时,可以得到其共轭转置向量,z‘(非共轭转置向量)
2.产生一个行向量
t=[0:0.1:10]
产生从0到10的行向量,元素之间间隔为0.1
t=linspace(n1,n2,n);
产生n1和n2直接线性均匀分布的n个数(缺省n时,产生100个数)
t=logspace(n1,n2,n)
(缺省n时,产生50个数)
3.who,whos,size和length是对提供工作空间变量信息很有用处的四个命令
- who 执行该命令可列出存储空间的所有变量
- whos 显示所有的变量,变量所占的字节数及该变量是否是实数
- size(a) 执行该命令可以得到矩阵a的行数和列数
- length(a) 执行该命令后,屏幕上显示出向量a的长度。如果a是矩阵,则显示的参数为行数列数中的最大数。
4.矩阵的标号
A(m,n)表示矩阵A的第m行,第n列的元素
A(1:2,1:3)表示矩阵A的从第一行到第二行,从第一列到第三列的所有元素;
A(:)可以得到一个长向量,该向量的元素是按列一一叠加在一起的。
例如
a= [1 2;3 4];a(:)↵
ans =1 3 2 4
矩阵的下标也可以是向量。例如
b=a(x,y)↵
; 可以得到一个矩阵b。a的行标来自向量x,而列标来自向量y。
例如,矩阵a有n列,那么b=a(:,n:-1:1)
将使矩阵a按列的逆序排列
5.特殊矩阵
i) 单位矩阵
eye(m),eye(size(a)) 可以得到与矩阵a同样大小的单位矩阵,eye(m,n)可得到一个可允许的最大单位矩阵而其余处补0
ii)所有元素为1的矩阵
ones(n),ones(size(a)),ones(m,n)
iii)所有元素为0的矩阵
zeros(n),zeros(m,n)
iv)空矩阵是一个特殊矩阵,这在线性代数中是不存在的。
例如: q=[ ]
矩阵q在工作空间之中,但它的大小为零。通过空阵的方法可以删去行与列。例如a=rand(5);a(:,1:3)=[ ]
第一条指令执行后得到一个5×5的矩阵;第二天指令将矩阵a的前三列删除。
v)对角矩阵
当v是向量时,diag(v)得到以v的元素为对角线上元素的对角矩阵;
当v是矩阵时,diag(v)得到一个列向量,其元素为矩阵v对角线上的元素,diag(v,1)得到矩阵v对角线上移一行的元素组成的列向量,diag(v,-1)得到矩阵v对角线下移一行的元素组成的列向量。
6.字符串要用单引号。
disp('text string') disp显示命令
7.结构数组
有时需要将不同的数据类型组合成一个整体,以便于引用。这些组合在一个整体中的数据是相互联系的。
下面简单结束结构的定义与引用
i) 结构数组的定义
定义结构数组可以采用两种方法:用赋值语句定义和用函数struce定义
赋值语句定义结构,结构名和属性名用"."分开。
student.name='John Doe' student.num=123456 student.test=[79 75 73;80 78 79;90 85 80];
再键入以下三行可给该结构数组增加一个元素
student(2).name='Ann Lane' student(2).num=123422; student(2).test=[70 76 73;80 99 79;90 85 80;80 85 86];
函数struct定义结构数组,格式为:
结构数组名=struct('属性1',’属性值1‘,'属性2',‘属性值2’,...)
ii)结构数组属性值的修改、设置和获取
str=student(2).name, 取出第二个元素的name属性的值
n=student(2).test(4,2),取出第二个元素的值中第四行第二列上的数。
student(2).test(4,2)=0修改第二个元素test的值中第四行第二列上的数的值
关于结构数组有如下函数
函数名 作用 - struct 生成和转换为结构数组
- fieldnames 查询结构数组的属性名
- getfield 查询结构数组的属性值
- setfield 设置结构数组的属性值
- rmfield 删除属性
- isfield 检查是否为数组的属性
- isstruct 检查数组是否为结构型
8.细胞数组
细胞数组也是matlab里的一类特殊的数组。在matlab里,由于有细胞数组这个数据类型,才能把不同类型,不同维度的数组组成一个数组。
细胞数组的每一个元素可为类型不同、维度不同的矩阵、向量、标量或多维数组,所有元素用大括号括起来。如矩阵A=[1 2 3 4;2 3 4 5;3 4 5 6]
c={A,sum(A),sum(sum(A))} 得到一个1×3的细胞数组
关于细胞数组有如下函数
函数名 作用
celldisp 显示细胞数组的内容
cell 生成细胞数组
cellplot 用图形方式显示细胞数组
num2cell 把数值转换为细胞型
deal 输入和输出的匹配
cell2struct 把细胞数组转换成结构数组
struct2cell 把结构数组转换为细胞数组
iscell 检验数组是否为细胞型
i) 细胞数组的生成 - 生成:
- 赋值语句直接生成;
- 先用cell函数预先分配数组,然后再对每个元素赋值
- 赋值:
- 采用数组元素的下标赋值
A{1,1}=[1:5;6:10];
A{1,2}=['Anne cat'];
A{2,1}={3+7i};
A