第2章MATLAB语言基础
2.4.1 矩阵创建
函数
2.4 矩阵及其运算
语法 说明 生成n阶hadamard矩阵,其中n满足 rem(n,4)=0。 生成第一行和第一列都为c,或第一列 为c和最后一行为r的hankel矩阵
与创建二维数组一样,矩阵创建的主要方法有:直接输入法、函数法、变换 法。
hadamard
hankel
hadamard(n)
2.3.5 数组的逻辑运算
逻辑 运算 相应的 逻辑运 算函数 逻辑运算符 说明
&
与 and && | 或 or || ~
能实现所有的逻 辑与运算
只能用于标量 之间 能实现所有的逻 辑或运算 只能用于标 量之间 实现所有的非运算
数组对应元素或两标量同为非零时 返回1;否则返回0
数组对应元素或两标量同为零时返 回0;否则返回1 数组元素或标量为非零时返回0,否 则返回1
2.3.4 数组的关系运算
是按元素来比较相同规格数组(行、列数相同)或比较数组 与标量。
运算符 < 函数 lt 说明 小于 运算符 >= 函数 ge 说明 大于或等于
<=
>
le
gt
小于或等于
大于
==
~=
eq
ne
等于
不等于
例: 数组的关系运算 >>A=[1 3;2 0];B=[4 2;2 -1];C=(A>B),D=le(A,B),E=(A~=B) C= 0 1 0 1 D= 1 0 1 0 E= 1 1 0 1
第2章 MATLAB语言基础
• • • • • • 2.1变量及其赋值 2.2 向量及其运算 2.3 数组及其运算 2.4 矩阵及其运算 2.5 函数与表达式 2.6 MATLAB数据类型
2.1变量及其赋值
2.1.1 变量命名规则
• 变量名只能由字母、数字和下划线组成,且必须以 字母开头; • 变量名区分字母的大小写; • 变量名不能超过最大长度限制; • 关键字不能作为变量名,如for、end和if等; 注意:存变量命名时应尽量避开MATLAB中预定义的 变量。
Realmin或realmin
pi
最小正实数
圆周率
2.1变量及其赋值
2.1.2 变量赋值
• 赋值语句的一般形式为:变量=数据(或表达式); 例: >>a=1,b=2,c=a^2+3*b+1 %命令间用逗号间隔,回车后命令窗口显示为: a=1 b=2 c=8 >>a=1;b=2; c=a^2+3*b+1 %前两条语句加上分号,回车后命令窗口显示为: c=8 %加了分号的语句的运行结果不再显示在命令窗口中 >>a %但可以通过直接输入变量名查看变量的取值 a=1 >>a=4 a=4 %当变量再次被赋值时,新值代替旧值 注意:标点符号必须在英文状态下输入 。
• 向量的混合积
– 运算格式为dot(A,cross(B,C)):是指先叉乘后再点乘,:
例: 向量的运算 >>a=[1 2 3];b=4:6;c=linspace(7,10,4);d=[1 4 6]; >>d=a+b, e=a-c d= 5 7 9 ??? Error using ==> minus Matrix dimensions must agree. % 表明e=a-c运算中a与c的维数不同,使运算出错 >>f=a+1,g=b-1 f= 2 3 4 g= 3 4 5 >> h=3*a, k=4*b' h= 3 6 9 k= 16 20 24 >>dot(a,b) ;相当于a*b' ans = 32 >> cross(a,b) ans = -3 6 -3 >> dot(a,cross(b,d)) ans = 0
表2-1 MATLAB预定义变量
预定义变量 ans eps flops Inf或inf i或j NaN或nan nargin nargout Realmax或 realmax 变量的含义 运算结果的缺省变量名 计算机中的最小数。当某量的绝对值小于eps时,可认为此 量为零 浮点运算数 正无穷大,由零做除数所引入的常量,如1/0 虚数单位i=j=(-1)1/2 表示非数值,如0/0,inf/inf,0*inf,inf-inf等 函数的输入变量数目 函数的输出变量数目 最大正实数
非
not
异或
xor
没有相应的运算符
数组对应元素或两标量只有一个非 零时返回1,否gt;A=[1 0 0;2 3 4];B=[0 1 3;0 1 2];C=A&B,D=or(A,B),E=~(A) C= 0 0 0 0 1 1 D= 1 1 1 1 1 1 E= 0 1 1 0 0 0
组合法 :
一个向量和数值或另一向量(同为行或列向量)组合在一起, 构成一个新的向量 。 例2-4 >>a=[1 2 3 4];b=[10 11];c=[a 13 b zeros(1,2)] c= 1 2 3 4 13 10 11 0 0
• 利用linspace()函数或logspace( )函数生成向量法:
函数法
函数 eye 语法 eye(n); eye(m,n); 说明 生成单位数组
ones
rand randn
ones(n); ones(m,n);
rand(n); rand(m,n); randn(n); randn(m,n);
生成元素全为1的数组
生成均匀分布的随机数组 生成正态分布的随机数组
zeros
例: 直接输入法创建数组
>> A=[1 2 3 4;5 6 7 8],B=[1 2+i 3i 4],C=[9:12;1:2:5 21],D=A+i*C A= 1 2 3 4 5 6 7 8 B= 1.0000 2.0000 + 1.0000i 0 + 3.0000i 4.0000 C= 9 10 11 12 1 3 5 21 D= 1.0000 + 9.0000i 2.0000 +10.0000i 3.0000 +11.0000i 4.0000 +12.0000i 5.0000 + 1.0000i 6.0000 + 3.0000i 7.0000 + 5.0000i 8.0000 +21.0000i
2.3.2 数组的寻址 数组的寻址----找出需要被操作的元素。对数组 A寻址的指令如下:
• • • • A(r,c):表示数组A的第r行第c列的元素。 A(r,:):表示数组A的第r行元素。 A(:,c):表示数组A的第c列的元素。 A(s):把数组A的所有列按先左后右的次序,首尾连 接成一个序列后,由上到下的第s个元素。 (MATLAB是按照列的先后顺序存放的。)
2.3.3 数组的代数运算
主要包括加(+)、减(-)、乘(.*)、除(./和.\)、幂运算(.^)、指数运算(exp)、对数运
算(log)和开方运算(sqrt)等。
例:数组的代数运算 >>A=[1 2 3;4 5 6];B=[1 3 4;2 5 6]; >>E=A.*B,F=A./B,H=A.^2,I=exp(A), K=sqrt(A) E= 1 6 12 8 25 36 F= 1.0000 0.6667 0.7500 2.0000 1.0000 1.0000 H= 1 4 9 16 25 36 I= 2.7183 7.3891 20.0855 54.5982 148.4132 403.4288 K= 1.0000 1.4142 1.7321 2.0000 2.2361 2.4495
2.2.2向量的运算 • 同维向量的加减 • 数与向量的加减 • 数乘向量 • 向量的点积
– 点积运算函数dot(A,B) :维数相同的向量A和B各对应位 置上元素相乘后的和,其结果是一个标量。
• 向量的叉积
– 叉积运算函数cross(A,B)。结果是一个过两向量交点且垂 直于两个向量所在平面的向量。 – 即若向量A=(a1,a2,a3),向量B=(b1,b2,b3), (A×B)=(a2b3-b2a3,a3b1-a1b3,a1b2-a2b1)。叉积运算 要求A和B必须是三元素的向量。
– linspace(a,b,n):产生首尾元素分别为a和b,长度为n的等 差行向量。当n省略时,默认n=100。 – logspace(a,b,n):产生首尾元素分别为10a和10b,长度为 n的对数等分行向量。当n省略时,默认n=50;当b=pi时, 在[10a pi]区间产生长度为n的对数等分行向量。
pascal
toeplitz
生成满足指定要求的n阶pascal矩阵
生成第一行和第一列都是r,或第一列 为c和第一行为r的toeplitz矩阵
wilkinson
wilkinson(n)
生成n阶J. H. Wilkinson's特征值测试 矩阵
4.2 矩阵的运算 • 矩阵的加、减:相同行数和列数的两矩阵对应元素间进
冒号表达式法 :
– 一般格式为:向量名=a1:step:a2。其中a1为向量的第一 个元素,a2为最后一个元素,step为变化步长,省略时, 默认为1。
例2-3 >>a=[1:2:10],b=[1:5] a= 1 3 5 7 9 %注意:也就是说用冒号表达式法生成向量时,最 后一个元素不一定是a2 b= 1 2 3 4 5
生成全零数组
按指定维方向串接数组 求对角线元素或对角矩阵 以数组水平中线为对称轴,交换上下对 称位置上的数组元素 以数组垂直中线为对称轴,交换左右对 称位置上的数组元素 按指定维上的数目复制数组 按指定的行和列重新排列数组 逆时针旋转数组90度的整数倍 提取数组下三角部分,生成下三角矩阵 提取数组上三角部分,生成上三角矩阵