读书笔记:MATLAB(02)

2.2 基本数学运算 2.2.1 矩阵的代数运算 矩阵转置:如果矩阵元素含有复数元素,则转置后取其共轭复数值,称为Hermit转置,记为B=A,MATLAB中用A’表示。而矩阵的一般转置用A.’表示。 加减法运算:A和B的维数若相同,则相应元素相加减;若二者之一为标量,则遍加减于每个元素;否则报错。 矩阵乘法:C=A\B,并不需要指定二者的维数,若不相容则报错 矩阵的左除:A\B表示A-1B 矩阵的右除:B/A表示B A-1 矩阵翻转:fliplr(A)左右翻转,flipud(A)上下翻转,rot90(A)逆时针翻转90度 矩阵乘方运算:只有方阵可进行乘方运算,B=A^x 点运算:这是一种特殊且非常重要的运算,即对应元素的直接运算,这要求二者维数相同。A.*B、A.^x、A.^A 2.2.2 矩阵的逻辑运算 逻辑运算的结果是一个矩阵,矩阵的元素非0即1。 与运算:C=A&B,只有当AB所有元素非0,C才为1,否则C取0 或运算:C=A|B,只有当AB所有元素为0,C才为0,否则C取1 非运算:C=~A,只有当A元素为0,C为1,否则C取0 异或运算:C=xor(A,B),只有当AB元素一个非0,一个为0,C才为1,否则取0,即只有二者逻辑结果不同才可取1,若相同则取0 2.2.3 矩阵的比较运算 一般比较运算的结果是一个矩阵,矩阵的元素非0即1。 C=A>B仅当A的元素大于B的对应元素C才取1,否则C取0. 类似的还有< 、>=、< =、==、~=等 find()、all()、any()函数 find()函数用于从矩阵中提取满足条件的元素的下标,下标的表示方式有两种: 第一种,依次将矩阵的第一列、第二列•••排列成一个列向量,输出结果为这个列向量的下标,例如A=[1,2,3;4,5,6;7,8,9]变形为列向量就是A1={1,4,7,2,5,8,3,7,9},find(A>=5)’的结果是3 5 6 8 9即A1列向量中的这些下标的元素满足大于等于5的筛选条件。 第二种,更为直观地输出行列下标,[i,j]=find(B>4);[i,j]的输出结果为 ans = 3 1 2 2 3 2 2 3 3 3 左侧为行标,右侧为列标 all()、any()函数返回的都是一个行向量,元素的数量跟A矩阵的列数相等,每个元素非0即1。 all(A>4)返回的行向量表示A矩阵中哪一列的所有元素都大于4 any(A>4)返回的行向量表示A矩阵中哪一列中存在至少一个元素大于4 2.2.4 解析结果的化简和变换 变量s用于表示解析式之前必须首先声明符号变量syms s s1=simple(s)自动选择最简格式进行化简 [s1,var1]=simple(s),字符串变量var1输出自动选择的化简方法的名称 常用的化简方法有: collect()合并同类项 expand()展开多项式 factor()因式分解 numden()提取多项式的分子和分母 sincos()三角函数化简 subs()用于变量替换 >> syms a b c x m p q >> f=a*x^2+b*x+c; >> g=subs(f,a,m) g =m*x^2 + b*x + c >> h=subs(g,{b,c},{p,q}) h =m*x^2 + p*x + q 2.2.5 基本数论运算 floor()向负无穷方向取整 ceil()向正无穷方向取整 round就近取整 fix趋零取整 [n,m]=rat(A)将A中所有元素变换成最简有理数,分子存储在矩阵n中,分母m中 rem(A,B)A中元素对B中元素求模得出的余数 gcd(n,m) 最大公约数 lcm(n,m)最小公倍数 factor质因数分解 isprime是否为质数,以0/1表示 A=1:100;B=A(isprime(A)) 2.3 流程结构 ;表示当前代码未结束输入,但是需要换行,所以并不会立刻执行计算;有时一行代码中间也使用;表示在一行中书写原本应该多行书写的代码。 for、while、if、switch case、try catch 如果能对整个矩阵进行运算时,尽量不要采用循环结构 s=0; for i=1:100 s=s+1; … end case{,,,} try,A catch,B end 首先试探性地执行A,如果没有错误则end,否则将错误信息赋值给lasterr并中止A转而执行B。A通常是高效但不稳定的算法,B通常是低效但稳定的算法,B也可用于说明A中的错误原因。

0%