1、MATLAB第一讲,一 开始,Matlab 是什么? 为什么用Matlab? 选择C+还是Matlab?,二 认识MATLAB,命令窗口 工作窗口 历史窗口 当前目录窗口 编辑窗口 图形窗口,MATLAB 6.5版的默认界面,三 Matalb工程运算方法,变量的定义 变量的结构数组或矩阵结构 变量的数值显示 变量保存和读取 数值运算:标量运算矩阵/数组运算多维数组,1) 变量名、函数名对字母大小写敏感,2) 变量名的第一个字符必须是英文字母,字符(字母,数字,下划线)个数和版本有关。 ,3) 变量名的组成可以是任意字母、数字或者下划线,中不得包含空格,标点,与常规的程序设计语言不同的MATLA
2、B并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变量已存在时MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。,4)不可和关键字同名。,5) 最好不要和内联函数同名,附录:MATLAB默认的预定义变量:,在MATLAB中有一些预定义变量,每当 MATLAB启动,这些变量就产生,所以用户最好不要定义与其同名的变量,这些变量有:,2 变量的数值显示,2)format改变数字显示的结果,1)MATLAB中所有数值均按照IEEE浮点标准规定的长型格式存储,数值有效范围为10-308
3、10308,附录:MATLAB中数的表示格式:,在MATLAB中只使用一种格式进行存储和运算,也就是双精度格式,占用8个字节64位但数字的显示有8种方式 指定格式:format x,附录:复数几种表示:,z=a+b*i或z=a+b*j z=a+bi或 z=a+bj (当b为标量时) z=r*exp(i*theta) a=real(z) %计算实部,复数z的实部:a=r*cos(); b=imag(z) %计算虚部,复数z的虚部:b=r*sin(); r=abs(z) %计算幅值,复数z的幅值; theta=angle(z) %计算相角,复数z的相角theta=arctg(b/a),以弧度为单位
4、,3 变量的保存和读取,变量的保存save 变量的载入load,4 变量的数据结构数组结构,标量:,11 数组,向量:,一维数组,二维矩阵:,多维矩阵,22 数组,5 运算标量的运算,(1)标量的算术表达式:+, - , * ,/, , ,(3) 使用预定义函数运算,(2)关系运算和逻辑运算,/, 不一样 表达式按与常规相同的优先级自左至右执行运算,括号可以改变运算的优先级。 优先级的规定是:指数最高,乘除次之,加减最低 = 赋值运算符 所有运算定义在复数域上,对于方根,运算只返回处于第一象限的解,(1)标量的算术表达式:+, - , * ,/, , ,逻辑操作:,关系操作,(2) 关系运算和
5、逻辑运算,1) 在所有关系表达式和逻辑表达式中,作为输入的任何非数都被看作逻辑真,只有才被认为是逻辑假,2) 所有关系表达式和逻辑表达式的计算结果,即输出,是一个由和作成的逻辑数组其中表示真,表示假,约定,三角函数和双曲函数,(3) 使用预定义函数运算,指数函数,复数函数,坐标变换函数,圆整函数与求余函数,特殊数据判断指令,6 数组/矩阵的数值运算,(1)一维数组的定义和寻访 (2)二维数组的定义和寻访 (3)数组/矩阵运算 (4)多维数组,(1)一维数组的定义和寻访,(a) 逐个元素输入法:,如:array=2, pi/2, sqrt(3), 3+5i,(b) 冒号生成法:,array=fr
6、om:step:to from-数组的第一个元素 step-采样点之间的间隔, 即步长. 最后一个元素 不一定等于to,其大小为to=from + step*(to-from)/step; 它可以省略, 默认为1;step可以取正数或负数,但要注意当取正时, 要保证tofrom,数组最后一个元素不超过to,取负时tofrom, 数组最后一个元素不小于from,(C) 定数线性采样法,在设定的总点数下,均匀采样生成一维行数组格式为: x=linspace (a, b, n),(D)利用已经定义的向量,y=logspace(a,b,n),A=1 2 B=3,A,对数等分采样:,(e) 一维数组的子
7、数组寻访和赋值,x=11 12 13 14 15;x(3)x(1 2 3)x(1:3)x(3:end)x(3:-1:1)x( find (x2) ) x(1 2 3 4 5 5 4 3 2 1),(a )二维数组的输入:对于较小数组,从键盘上直接输入最简便二维数组必须有以下三个要素:)整个输入数组必须以方括号“”为其首尾;)数组的行与行之间必须用分号或回车键隔离;)数组元素必须有逗号或空格分隔,(2)二位数组的定义和寻访,(b)用标准数组生成函数生成数组,附录:用标准数组生成函数生成数组,(c) 二维数组的子数组寻访和赋值,1) 寻访某一个元素,array (r, c)-数组中的第r行c列的元
8、素,array (r,:)-数组的第r行全部元素 array (:,c)-数组的第c列的全部元素 Array (r1,r2,:)-数组的地r1,r2行的全部元素,2) 寻访某一列或一行的元素,array (l)-按单下标寻访数组,3) 单下标寻访,4) 寻访全部元素,array (:,:),(3)二维数组/矩阵的运算,a) 矩阵运算:+,-, *,/, , ,转置 b) 数组运算:+,-,.*,./,.,. c) 关系和逻辑运算,常用矩阵运算函数,(a) 矩阵运算,例 解多元一次方程,x + 3y +z =15 已知: 2x +y + 3z=20 求 x, y, z之直x+ y =4,1) 将
9、方程化为矩阵与矢量相乘的形式:AX=b. 写出A,b,解题步骤:,2) 判断方程组是否有解计算矩阵和其增广矩阵的秩 r (A), r (A | b),如果有解,则解为:X=A-1*b =A(-1)*b=inv (A)*b或 X=Ab,| x11 x12 x1n | x21 x22 x2n | 对于(m x n)数组X | | =xij m x n| | xm1 xm2 xmn | 函数f(.)的数组运算规则是指:f(X)=f(xij)m x n 也就是对数组中没每个元素都实施同样的操作,例 x=30, 45, 60; 90, 105, 120, 计算sin( pi*x/180 ),一般函数数组
10、运算规则的定义,(b) 数组运算,1) 标量可以与任何维数的数组进行比较,比较在此标量和数组 每个元素之间进行,因此比较结果为与被比数组同维的数组. 2) 数组进行比较时,两数组必须是同维的,结果也得到一个同维的数组,关系和逻辑运算的说明,(c)关系和逻辑运算,(4)多维数组,(a)多维数组的定义 (b)数组信息的获取,1)全下标方式,A(:,:,1)=1 2;3 4 A(:,:,2)=5,2)函数直接创建特殊数组,ones,zeros,rand,randn,(a) 多维数组的定义方式,3) 函数生成数组,例:,a=1 2;3 4 b=5 6;7 8 cat(3,a,b),ans(:,:,1)
11、 =1 23 4 ans(:,:,2) =5 67 8,例:,a=1 2;3 4 b=5 6;7 8 cat(2,a,b),ans =1 2 5 63 4 7 8,repmat(a,2,2,2),ans(:,:,1) =1 2 1 23 4 3 41 2 1 23 4 3 4 ans(:,:,2) =1 2 1 23 4 3 41 2 1 23 4 3 4,a=1 2 3 4;5 6 7 8 reshape(a,2,2,2),ans(:,:,1) =1 25 6 ans(:,:,2) =3 47 8,(b) 获取矩阵信息的函数,a=1 2;3 4 b=5 6;7 8 c=cat(3,a,b) size(c) ndims(c) numel(c) length(c),