您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > MATLAB 7.0自学笔记
Matlab7.0自学实用手册【穆伟版权所有】-1-MATLAB7.0程序设计基础1、常量与变量:a、特殊常量:一些特殊的固定变量,具有特定的意义,用户自定义变量名时应避免使用;ans——用于结果的默认变量名;pi——圆周率;inf——无穷大;NaN——Not-a-Number,表示不定值;tic——秒表开始执行;toc——秒表终止;i,j——虚数单位;date——日历;clock——钟表;b、一般变量:即用户变量,与其它语言不同,matlab不要求事先对所用变量进行声明,亦无需指定变量类型,它会自动根据变量值或对变量的操作来识别变量类型。在赋值过程中,如果赋值变量已经存在,它会以新值覆盖旧值,包括以新值类型代替旧值类型。变量命名规则:首先,变量名区分大小写;其次,变量名的长度不得超过31位;最后,变量名以字母开头,可由字母、数字、下划线组成,但不能使用标点!变量作用域:若未加特殊说明,matlab视所识别的一切变量为局部变量,即仅在所使用的m文件内有效。要将变量定义为全局变量的话,应对变量进行说明,即在变量前加关键字global;一般全局变量字符用大写英文字母表示。2、数组:建立数组:1)逐个元素输入法:如x=[123;234;245]2)冒号法:x=初始量:步长:终止量;如x=1:1:5,运行结果为:x=123453)特殊方法:x=linspace(初始量,终止量,数组元素的个数)y=logspace(初始量,终止量,数组元素的个数):一般logspace(y1,y2,N)表示在110y和210y之间插入N-2个元素,组成一个含有N个元素的数组;如果y2=pi,则表示在110y和pi之间插入N-2个元素;如果N2,返回值为210y。(心得:二维数组的建立可通过逐行定义一维数组的方法实现,比如x=[1:2:10;3:1:7;4:3:16]或者x=[linspace(1,8,4);linspace(2,10,4);linspace(3,20,4)]来实现二维数组的建立。)引用数组:1)一维数组:x(n)和x(n1,n2)Matlab7.0自学实用手册【穆伟版权所有】-2-x(n)表示一维数组中的第n个元素;x(n1:n2)表示一维数组中的第n1至n2个元素。2)二维数组:x(m,:)和x(:,n)及x(m,n1:n2)x(m,:)表示二维数组中的第m行元素;x(:,n)表示二维数组中的第n列元素;x(m,n1,n2)表示二维数组中的第m行中的n1至n2个元素。细胞数组与结构数组:1)细胞数组:细胞数组是以单元为元素的数组,每个单元称为单元,每个单元可以包含其他类型数组,如实数矩阵、字符串数组、复数向量。(说白了就是数组中的数组,即数组的嵌套)细胞数组通常由{}创建,其中的数据通过数组下标引用。【示例】:clearA(1,1)={3+2i};A(1,2)={'fucknuc'};A(2,1)={[1:2:6]};A(2,2)={[linspace(1,8,4);linspace(2,10,4);linspace(3,20,4)]};AA=[3.0000+2.0000i]'fucknuc'[1x3double][3x4double]A(2,2)ans=[3x4double]A(1,2)ans='fucknuc'2)结构数组:结构数组是根据属性名组织起来的不同类型数据的集合。结构的任何一个属性可以包含不同的数据类型(如字符串文本、标量、矩阵等)。MATLAB使用分级存储机制来存储不同类型的数据,结构数组数据通过属性名来引用。(心得:说的更直接点,我认为即是不同变量类型数组的组合而成的数组)【函数命令】struct【调用格式】s=stuct('类型1',{类型1的数组},'类型2',{类型2的数组},……)注:如果{}中没有任何数据即为空时,表示建立一个空的结构数组,不含任何数据。当扩展结构数组时,MATLAB对未指定的属性以空矩阵赋值,且数组中每个结构具有同样多的属性名、所有属性具有相同的属性名。Matlab7.0自学实用手册【穆伟版权所有】-3-下面举个例子就明白了:student=struct('name',{'MuWei','WangXP'},'sex',{'male','female'})student=1x2structarraywithfields:namesexstudent(1)%查看结构数组中第1个结构的数据ans=name:'MuWei'sex:'male'student(2)%查看结构数组中第2个结构的数据ans=name:'WangXP'sex:'female'student(2).name%通过属性名来引用数据即结构2中name属性的数据ans=WangXP3、运算符:算术运算符:操作符意思+算术加-算术减*算术乘.*点乘Matlab7.0自学实用手册【穆伟版权所有】-4-^算术乘方.^点乘方\算术左除(向左倒).\点左除(向左倒)/算术右除(向右倒)./点右除(向右倒)说明:上面的算术加(+)、减(—)、乘(*)及乘方(^)与平时传统意义的加、减、乘及乘方类似,用法基本相同。但是点乘(.*)、点乘方(.^)等运算则有些特殊,是针对矩阵内元素对元素之间的运算,即线性代数中的矩阵乘法;点运算要求参与运算的变量(即矩阵)在结构上必须是相似的,即要求矩阵的列数和行数必须对应相等。MATLAB中的除法运算相对有些复杂:对于简单数值运算而言,算术左右除不同:算术右除与传统除法相同,即baba/;算术左除则恰好相反,即abba\;对于矩阵而言,算术右除AB/相当于求解线性方程组AxB,即1/BAAB;算术左除AB\则相当于求解线性方程组BAx,即BAAB1\。【实例】:已知10005.05.005.05.0A,000000123B,求133)2()2(EABEAC【代码】:A=[0.50.50;-0.50.50;001]A=0.50000.50000-0.50000.50000001.0000B=[321;000;000]B=321000000E=[100;010;001]Matlab7.0自学实用手册【穆伟版权所有】-5-E=100010001C=(2*A-E)*(B^3)/(2*A-E)C=000-1827-9000关系运算符:操作符定义==等于~=不等于大于=大于等于小于=小于等于关系运算符主要用来对矩阵与数、矩阵与矩阵进行比较,返回二者关系的、由数0和1组成的矩阵,0和1分别表示不满足和满足指定关系。判断一个矩阵是否为空矩阵时,不能使用“==”,而应当使用函数isempty,MATLAB的空矩阵是指矩阵存在,但不含任何元素。【示例】:矩阵522765431A,求矩阵A中不等于2的元素个数n。【代码】:A=[134;567;225]Matlab7.0自学实用手册【穆伟版权所有】-6-A=134567225B=A~=2B=111111001n=sum(sum(B))n=7逻辑运算符操作符定义&逻辑与|逻辑或~逻辑非xor逻辑异或MATLAB语言中进行逻辑判断时,所有非零数值均被认为为真,而零为假;在逻辑判断结果中,判断为真时输出1、判断为假时输出0。在算术、关系、逻辑三种运算符中,算术运算符优先级最高,关系运算符次之,逻辑运算符的优先级最低。在逻辑“与”、“或”、“非”三者中,“与”和“或”有相同的优先级,从左到右依次执行都低于“非”的优先级。实际应用中可以通过括号来调整运算过程中的次序。即:运算符优先级排序算术运算符关系运算符(等于、大于、小于等)逻辑运算符(与、或、非、异或)非(~)与(&)=或(|)可以通过括号来调整运算过程中的优先级次序MATLAB中的逻辑运算规则为:与运算只有运算的两个对象都为真时结果才为真否则为假(即都为1时才为1,否则为0);或运算只要运算的两个对象有一个为真则结果为真,两个Matlab7.0自学实用手册【穆伟版权所有】-7-同时为假时才为假(即有一个为1则为1,两个都为0才为0);异或运算的两个对象不同时才为1,相同时为0(即两个都为0或都为1时为0,其它的为1);非运算则是对运算对象取反即可。【示例】:逻辑矩阵1011A,0010B,逻辑标量b=1,求C1=A&b,C2=A|b,C3=xor(A,B)。【代码及结果】:clearA=[11;01]A=1101b=1b=1B=[01;00]B=0100C1=A&b%将A中元素与1做与运算,求出1的个数C1=1101C2=B|0%将B中的元素与0进行或运算,求出0的个数C2=Matlab7.0自学实用手册【穆伟版权所有】-8-0100C3=xor(A,B)%将矩阵A与矩阵B进行异或运算,计算A与B中不同的元素个数C3=1001逻辑函数:逻辑函数十分有用,在交互运算、矩阵变化时可以方便地查找或替换矩阵中满足一定条件的部分或所有元素。MATLAB中的主要逻辑函数如表所示:MATLAB中的逻辑函数逻辑函数函数意义all判断是不是所有元素为非零值any判断是否存在一个元素为非零值exist查看变量或函数是否存在find找出向量或矩阵中非零元素的位置标识isempty判断矩阵是否为空矩阵isequal判断几个对象是否相等isnumeric判断对象是否为数值型对于二维矩阵A,all(A)表示如果矩阵A的某列所有元素都为非零数,则返回结果的当前列为逻辑“真”,即逻辑1。逻辑函数any的用法与all相同,其在矩阵相除时,可判断除数矩阵是否含有零元素。使用isnumeric等命令时,如果判断对象为系数矩阵、双精度矩阵、复数矩阵等,则返回值为1;如果判断对象为字符串、结构矩阵等,则返回值为0。在程序设计中,有时需要知道变量是否已经被定义过,有时需要了解变量的类型,这是exist函数非常有用,其调用格式为a=exsit('A'),a的返回值为数0~7,分别表示不同的含义:aA的状态或类型0对象A不存在或不在MATLAB的搜索路径下1对象A是工作空间中的一个变量2对象A是一个M文件或在MATLAB搜索路径下的未知类型文件3对象A是一个MATLAB搜索路径下的文件4对象A是一个MATLAB搜索路径下的已编译的SIMULINK函数(MDL文件)Matlab7.0自学实用手册【穆伟版权所有】-9-5对象A是MATLAB的内置函数6对象A是一个MATLAB搜索路径下的P文件7对象A是一个路径,不一定是MATLAB搜索路径ALL函数示例:向量a=[135],矩阵A=[123;045],求B1=all(a),B2=all(A),B3=all(A,2)。【代码及运行结果】:a=[135]a=135A=[123;045]A=123045B1=all(a)%判断向量a中的每个元素是否为非零数B1=1B2=all(A)%依次对矩阵的列进行判断是否每列的元素都为非零数B2=011B3=all(A,2)%将指定的第2维作为向量进行运算B3=10【Any函数示例】:向量a=[030],矩阵A=[103;005],求B1=any(a),B2=any(A),Matlab7.0自学实用手册【穆伟版权所有】-10-B3=any(A,2)。【代码及运行结果】:cleara=[030]a=030A=[103;005]A=103005B1=any(a)%判断a中是否存在一个元素为非零值B1=1B2=any(A)%判断矩阵A的每一列中是否存在非零值B2=101B3=any(A,2)%判断A的每一行中是否存在非零值B3=11【Exsit函数示例】:求返回值a1=exist('work'),a2=exist('filtdes'),a3=exist('c:\w
本文标题:MATLAB 7.0自学笔记
链接地址:https://www.777doc.com/doc-3313552 .html