典型的Matlab工作界面如图1所示。
图1.1 Matlab工作界面
与Windows图形操作过程不同,Matlab的数据处理都是在如图1.1所示的、所谓的命令窗口内完成的。命令窗口是操作前台,输入指令回车后,后台马上进行相应处理,最后将结果返回前台,因此Matlab互动性很强。由于从命令到结果的过程短,尝试某个运算命令甚至想法就变得十分方便;相比之下,FTORTRAN /C /C++等,试验一个运算指令需要经过编译,则周期相对比较长,需要耐心等待。
输入Matlab命令时,首先注意以下几点:
a) 命令区分大小写;
b) 续行:在尾部加‘…’;
c) 不显示返回结果:在尾部加‘;’:
比如:
Matlab是矩阵计算器,矩阵元素可以是有不同类型的。Matlab处理数据类型很灵活。与C/C++/Fortran语言不同,变量类型无须事先声明,在其赋值时根据数据类型自动确定:赋什么类型的数据,就按照什么类型去运算。这有点像Fortran语言的默认习惯,但Fortran规定以i,j,k,l,m,n开头的变量名,默认为整型,Matlab无此规定。当显示实数时,数据显示格式可以改变:format short / long ;
Matlab内,也预定义一些变量,比如pi表示3.1415926, Inf 表示无穷大,NaN为非数(0/0)。i 为虚数,复数直接用i表示,很符合书写习惯。这就是Matlab方便的地方。
最初,Matlab只是处理数组和矩阵,其操作命令有如下80个:
目前,又增加了新的数据类型,比如结构(struct),单元(cell), 映射(map), 甚至类(class)。对于我们,Matlab以下几类变量比较重要:
1. 标量:
即矩阵的元素,为整数,实数,字符,复数等。需要留意其赋初始值的方法。
a) isscalar(A)
b) isnan(A)
c) isinf(A)
d) isfinite(A)
e) NaN,
f) Inf
2. 向量:
即数组,分为行数组或者列数组;
a) a = [ 1 2 3 4 5 6]; 行向量
b) a = [1;2;3;4;5;6]; 列向量
c) a = 0:0.1:1 循环
d) a = [0:0.1:1] * pi ;
e) a = (0:0.1:1) * pi ;
f) a = linspace( 0,pi,11 ); 取11点;
g) a = linspace( x1,x2); 等间距100点,包括边界点
h) a = linspace( x1,x2,N); 等间距N点,包括边界点
i) a = logspace( x1,x2); 等间距50点,包括边界点
j) a = logspace( x1,x2, N); 等间距N点,包括边界点
关于数组,值得注意的是挑出数组子集的方法。比如
或者采用逻辑数组挑出子集,即逻辑索引。
与数组相关的判断函数,返回一个逻辑数
i. isvector(a)
ii. isequal(a,b)
iii. isempty(a)
iv. ischar(a): a 是字符串?
3. 矩阵
这是Matlab最核心的类型。与矩阵A的元素操纵方法如下:
a) A( i , j ) - i 行 j列的元素
b) A( : , j ) - 取j列元素;
c) A( i , : ) - 取i行元素;
d) A(1:3, 5) - 取1-3行在第5列的元素,即[A(1,5) A(2,5) A(3,5)]
e) [m,n]=size(A) : 查询矩阵A尺寸,结果为m行n列
矩阵赋初值的方法:
i. A=[ 1 2 3; 4 5 6];
ii. A=zeros(m,n); zeros(size(B))
iii. A=ones(m,n); ones(size(B))
iv. A=rand(m,n); rand(size(B))
v. A=eye(m,n); eye(size(B)) 单位矩阵
vi. A=NaN(m,n); NaN(size(B))
vii. A=inf(m,n); inf(size(B))
由矩阵扩展为矩阵:
repmat(Matrix, m,n) 是复制矩阵:垂直m倍,水平n倍。
比如
矩阵和矢量相乘:
矩阵,向量,则
其转置分别为和。
Matlab操作如下:
右图所示Matlab中,检查两个矩阵是否相等。返回矩阵位置上每对元素的比较结果。
4. 单元:元素的数据类型不一致的矩阵
相关判断函数是iscell(A).
MATLAB预留的单元变量:
a) varargin, nargin 用于检查当前函数的输入变量;
b) varargout, nargout 用于检查当前函数的输出变量。
利用上述数据类型,可以表示几何元素:
5. 点
a) P=[x y z]
6. 线
a) L=[ x1 y1 z1; x2 y2 z2]
b) X=[x1 x2], Y=[y1 y2], Z=[z1 z2]
c) L=P2-P1;
d) 线长度:l=norm(L);
7. 面
a) 多边形
i. Poly=[ P1; P2; P3; P4; P5; P6]
ii. xv=[x1 x2 x3 x4 x5 x6]; yv=[y1 y2 y3 y4 y5 y6];
iii. 产生
1. t = 0:pi/5:2*pi;
2. patch(sin(t),cos(t),'y')
3. axis equal
b) 多边形面积:A = polyarea(xv,yv);
c) 内点: IN = inpolygon(X,Y,xv,yv).
有关几何方面功能,请查阅Mapping Toolbox。
15. Matlab内一些极端常数
问题1:已知射线的原点和斜率,多边形顶点P,如何判断其是否相交?
本文来源:https://www.2haoxitong.net/k/doc/99e0e7fbce2f0066f4332203.html
文档为doc格式