第2章 数值数组及其运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
产生全0数组 产生各种分布的随机数组
randsrc() 在指定字符集上生成,产生均匀分 布的随机数组
随机矩阵rand 调用方法为Y = rand(n),生成n×n阶随机矩阵, 元素在(0,1)内
↙ 0.4186 0.8462 0.5252 0.2026 0.6721 0.8381 0.0196 0.6813 0.3795 0.8318 0.5028 0.7095 0.4289 0.3046 0.1897
>> A(2,2)=15 A= 2 2 2 2 15 2
>> A(4,5)=20 A= 2 2 2 0 0 2 15 2 0 0 0 0 0 0 0 0 0 0 0 20
>> clear >> Y = rand(5,4) Y = 0.0153 0.7468 0.4451 0.9318 0.4660
魔方矩阵magic 调用方法为Y = magic(n),生成n×n阶魔方矩阵,其各行, 各列及对角线的元素值总和相等 >> clear >> Y = magic(4) 程序执行结果为: Y = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
0.2000
0.6000
1.0000
1.4000
4、定数对数采样法(logspace函数) 格式:X=logspace(a,b,n)
其中:a为数组第一个元素,b为最后一个,n为采样点数。
例:以-1为起始值, 3为终值,产生一个具有11个采 样点的“行”数组。
>> y=logspace(-1,3,11) y= Columns 1 through 8 0.1 0.25119 0.63096 25.119 63.096 Columns 9 through 11 158.49 398.11 1000
数组AM就会自动生成于MATLAB工作空间。
7、利用MATLAB函数创建数组
函数 diag() eye() magic() 含义
右表列出了最 常用的函数
rand() randn() ones()
zeros() random()
产生对角数组(对高维不适用) 产生单位数组(对高维不适用) 产生魔方数组(对高维不适用) 产生均匀分布的随机数组 产生正态分布的随机数组 产生全1数组
7 3i 8 2i 9 1i
>> B=[1+9i,2+8i,3+7i;4+6i,5+5i,6+4i;7+3i,8+2i,9+1i]
B=
1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i 7.0000 + 3.0000i 8.0000 + 2.0000i 9.0000 + 1.0000i
1.5849
3.9811
10
5、中等规模数组的数组编辑器创建法
例:根据现有数据创建一个(3x8)的数组
6、中等规模数组的M脚本文件创建法
例:创建和保存数组AM的MyMatrix.m文件。 (1)打开M文件编辑器,并在空白处填写所需数据 (2)在首行编写文件名和简单说明 (3)保存并给文件起名 (4)以后调用数组AM时,只需键入>>MyMatrix ,
>> CBaidu NhomakorabeaB
ans = 3 3 3
4.数组乘法运算:
>> A*B ans = 50 122
5.数组除法运算:左除“\”和右除“/”。
左除:A\B表示A-1B,A为方阵; 右除: A/B表示AB-1,B为方阵。 注意A和B必须是等阶,否则会出错。
例:
>> A=[1,2;3,4];B=[1,3,5;2,4,6];C=[1,1,3;1,2,3;4,5,6]; >> A\B
数组的标识: 数组按列存储,可以采用全下标方式和单下标方式进行标识。 全下标方式:用行下标和列下标来表示数组元素的位置; 单下标方式:只用一个下标来指明元素所在数组的位置,具体 将数组的所有列按照“先左后右”顺序连接成“一维”长列。 例如:(mxn)数组A中元素A(i,j)对应的单下标为l=(j-1)*m+i。 例:
BB = 1.0000 - 1.0000i 1.0000 + 3.0000i 0 + 5.0000i
B_B = 1.0000 + 1.0000i 1.0000 - 3.0000i 0 - 5.0000i
3.数组加减法运算:
>> A=[1,2,3;4,5,6];B=[7;8;9];C=[10;11;12]; >> A+B ??? Error using ==> plus Matrix dimensions must agree.
>> [m,n]=size(C),l=length(C) m= 4 n= 3 l= 4 其中 length(A) ,若A为二维数组或多位数组,则其等效为: max(size(A))。
BACK
2.2 数组的运算和操作
一、数组的代数运算
1.数组与标量的运算: + 加;-减;*乘;/右除;^乘
6.数组点运算:
例:>> A=[1,2;3,4];B= [4,5;6,7]; >> C=A*B,CC= A.*B,AA=A.*A C= 16 19 36 43 CC = 4 10 18 28 AA = 1 4 9 16
7.数组求幂运算:包括数组与常数,数组与数组两种幂运
算,用点运算的形式表示。 >> A=[1,2;3,4];B= [2,2;1,2]; >> A1=A.^3,A2=3.^A,A3=A.^B A1 = 1 8 27 64
2、冒号“:”生成法 格式: X=a:inc:b
其中:a 为数组第一个元素, b 为最后一个, inc 为采样点的间隔,即步距。
例:以1为初值,0.3为步距,3.9为终值,产生一个 “行”数组。 >> a=1:0.3:3.9 a= 1.0000 1.3000 1.6000 1.9000 2.2000 2.5000 2.8000 3.1000 3.4000 3.7000
%产生(2x4)的全1数组
%将正态随机数发生器置0 %产生(2x3)的正态随机数组
%产生(3x3)的单位阵
%取D阵的对角元素
>> diag(diag(D)) %内diag取D阵的对角元素,外diag利用它生成对角阵 ans = 1 0 0 0 1 0 0 0 1 >> randsrc(3,20,[-3,-1,1,3],1) %在[-3,-1,1,3]字符集上产生(3x20)的 %均匀分布数组,随机数发生器的状态设置为1 ans = Columns 1 through 18 3 1 3 -1 -3 3 -3 -3 -1 3 -1 -1 -3 1 1 -3 3 -1 1 3 1 3 -1 1 1 1 1 1 1 1 3 -1 -1 -3 -1 -1 3 -1 -3 -1 1 -1 3 -1 -1 1 1 -1 -3 3 -1 -1 3 -1 Columns 19 through 20 1 3 1 -3 3 3
>> B^(-1) ans = 0.8333 -0.6667 -0.1667 0.3333 >> B^(0.2) ans = 1.0862 0.3448 0.0862 1.3448
2.转置运算:
>> A=[1,2,3;4,5,6];B=[1+1i,1-3j,-5j];AA=A',BB=B',B_B=B.' AA = 1 4 2 5 3 6
例:>> ones(2,4) ans = 1 1 1 1 1 1 1 1 >> randn(„state‟,0) >> randn(2,3) ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 >> D=eye(3) D= 1 0 0 0 1 0 0 0 1 >> diag(D) ans = 1 1 1
3、定数线性采样法(linspace函数) 格式: X=linspace(a,b,n)
其中: a为数组第一个元素,b为最后一个元素,n为采样点数。
例:以-1为起始值, 3为终值,产生一个具有11个采样 点的“行”数组。
>> x=linspace(-1,3,11) x= Columns 1 through 10 -1.0000 -0.6000 -0.2000 1.8000 2.2000 2.6000 Column 11 3.0000
例1:
>> A=[1,2,3;4,5,6]; >> A-2 ans = -1 0 1 2 3 4 >> A*2 ans = 2 4 6 8 10 12 >> A/2 ans = 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
例2: >> B=[2,4;1,5]; >> B^2 ans = 8 28 7 29
A2 = 3 9 27 81 A3 = 1 4 3 16
二、数组的操作
1.数组的块操作:元素更改,插入子块,提取子块, 重排子块,扩充子块,扩充数组等,重点学会使用 “:”的应用。
例:A=[1,2,3;4,5,6];B= [7,8,9]; >> A(1,:)=B A = 7 8 9 4 5 6 >> A(:,:)=2 A = 2 2 2 2 2 2
第2章 数值数组及其运算
2.1 数值数组的创建、标识、查询和定位 2.2 数组的运算和操作 2.3 “无穷大”、“非数”和“空”数组
2.1 数值数组的创建、标识、查询和定位
数组的创建:多种
1、逐个元素输入法 1 9i 2 8i 3 7i 例如: 产生复数数组 B 4 6i 5 5i 6 4i
>> clear >> A = [1 2 3; 4 5 6; 7 8 9] >> B = [10 11 12] >> X = A\B 输出结果为:>> X=A\B ??? Error using ==> mldivide Matrix dimensions must agree 说明两个矩阵在维数上不匹配, 因而出现错误。
范德蒙(Vandermonde)矩阵
该矩阵的特点是最后一列为1,倒数第二列为一个指定的向量,其他各 列是其后列与倒数第二列的点乘积。 调用方法为vander(x),可用一个指定向量生成一个范德蒙矩阵 >> m = [2:5] >> vander(m) m = 2 3 4 5 ans = 8 4 2 1 27 9 3 1 64 16 4 1 125 25 5 1
ans = 0 -2.0000 -4.0000 0.5000 2.5000 4.5000
>> B/C
ans =
0.0000 2.3333 -0.3333 0 2.0000 0
>> clear >> A = eye(3) >> B = [1 2 3; 4 5 6; 7 8 9] >> X = A\B 程序的运行结果为: X= 1 2 3 4 5 6 7 8 9
>> A=[1,2;3,4;5,6] A= >> A(3,3) ??? Index exceeds matrix dimensions. >> A(5) ans = 4
数组的查询和定位
学会使用find指令进行数组元素的定位,以及指令length 和 size 的用法。 >> A=[1,3,5,7,9;2,4,6,8,0];B=[1,2,3,4,5,6]; >> C=[11,12,13;21,22,23;31,32,33;41,42,43]; >> [m,n]=find(A>6) m= 1 2 1 n= 4 4 5 >> k=length(B) k= 6
方 2.转置运算 3.数组加减法运算 4.数组乘法运算 5.数组除法运算 6.数组点运算 7.数组求幂运算
2.2 数组的运算和操作
二、数组的操作
1.数组的块操作: + 加;-减;*乘;/左除;^乘方 2.数组的翻转操作 3.数组运算常用数学函数
1.数组与标量的运算:
+ 加;-减;*乘;/右除;^乘方
randsrc() 在指定字符集上生成,产生均匀分 布的随机数组
随机矩阵rand 调用方法为Y = rand(n),生成n×n阶随机矩阵, 元素在(0,1)内
↙ 0.4186 0.8462 0.5252 0.2026 0.6721 0.8381 0.0196 0.6813 0.3795 0.8318 0.5028 0.7095 0.4289 0.3046 0.1897
>> A(2,2)=15 A= 2 2 2 2 15 2
>> A(4,5)=20 A= 2 2 2 0 0 2 15 2 0 0 0 0 0 0 0 0 0 0 0 20
>> clear >> Y = rand(5,4) Y = 0.0153 0.7468 0.4451 0.9318 0.4660
魔方矩阵magic 调用方法为Y = magic(n),生成n×n阶魔方矩阵,其各行, 各列及对角线的元素值总和相等 >> clear >> Y = magic(4) 程序执行结果为: Y = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
0.2000
0.6000
1.0000
1.4000
4、定数对数采样法(logspace函数) 格式:X=logspace(a,b,n)
其中:a为数组第一个元素,b为最后一个,n为采样点数。
例:以-1为起始值, 3为终值,产生一个具有11个采 样点的“行”数组。
>> y=logspace(-1,3,11) y= Columns 1 through 8 0.1 0.25119 0.63096 25.119 63.096 Columns 9 through 11 158.49 398.11 1000
数组AM就会自动生成于MATLAB工作空间。
7、利用MATLAB函数创建数组
函数 diag() eye() magic() 含义
右表列出了最 常用的函数
rand() randn() ones()
zeros() random()
产生对角数组(对高维不适用) 产生单位数组(对高维不适用) 产生魔方数组(对高维不适用) 产生均匀分布的随机数组 产生正态分布的随机数组 产生全1数组
7 3i 8 2i 9 1i
>> B=[1+9i,2+8i,3+7i;4+6i,5+5i,6+4i;7+3i,8+2i,9+1i]
B=
1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i 7.0000 + 3.0000i 8.0000 + 2.0000i 9.0000 + 1.0000i
1.5849
3.9811
10
5、中等规模数组的数组编辑器创建法
例:根据现有数据创建一个(3x8)的数组
6、中等规模数组的M脚本文件创建法
例:创建和保存数组AM的MyMatrix.m文件。 (1)打开M文件编辑器,并在空白处填写所需数据 (2)在首行编写文件名和简单说明 (3)保存并给文件起名 (4)以后调用数组AM时,只需键入>>MyMatrix ,
>> CBaidu NhomakorabeaB
ans = 3 3 3
4.数组乘法运算:
>> A*B ans = 50 122
5.数组除法运算:左除“\”和右除“/”。
左除:A\B表示A-1B,A为方阵; 右除: A/B表示AB-1,B为方阵。 注意A和B必须是等阶,否则会出错。
例:
>> A=[1,2;3,4];B=[1,3,5;2,4,6];C=[1,1,3;1,2,3;4,5,6]; >> A\B
数组的标识: 数组按列存储,可以采用全下标方式和单下标方式进行标识。 全下标方式:用行下标和列下标来表示数组元素的位置; 单下标方式:只用一个下标来指明元素所在数组的位置,具体 将数组的所有列按照“先左后右”顺序连接成“一维”长列。 例如:(mxn)数组A中元素A(i,j)对应的单下标为l=(j-1)*m+i。 例:
BB = 1.0000 - 1.0000i 1.0000 + 3.0000i 0 + 5.0000i
B_B = 1.0000 + 1.0000i 1.0000 - 3.0000i 0 - 5.0000i
3.数组加减法运算:
>> A=[1,2,3;4,5,6];B=[7;8;9];C=[10;11;12]; >> A+B ??? Error using ==> plus Matrix dimensions must agree.
>> [m,n]=size(C),l=length(C) m= 4 n= 3 l= 4 其中 length(A) ,若A为二维数组或多位数组,则其等效为: max(size(A))。
BACK
2.2 数组的运算和操作
一、数组的代数运算
1.数组与标量的运算: + 加;-减;*乘;/右除;^乘
6.数组点运算:
例:>> A=[1,2;3,4];B= [4,5;6,7]; >> C=A*B,CC= A.*B,AA=A.*A C= 16 19 36 43 CC = 4 10 18 28 AA = 1 4 9 16
7.数组求幂运算:包括数组与常数,数组与数组两种幂运
算,用点运算的形式表示。 >> A=[1,2;3,4];B= [2,2;1,2]; >> A1=A.^3,A2=3.^A,A3=A.^B A1 = 1 8 27 64
2、冒号“:”生成法 格式: X=a:inc:b
其中:a 为数组第一个元素, b 为最后一个, inc 为采样点的间隔,即步距。
例:以1为初值,0.3为步距,3.9为终值,产生一个 “行”数组。 >> a=1:0.3:3.9 a= 1.0000 1.3000 1.6000 1.9000 2.2000 2.5000 2.8000 3.1000 3.4000 3.7000
%产生(2x4)的全1数组
%将正态随机数发生器置0 %产生(2x3)的正态随机数组
%产生(3x3)的单位阵
%取D阵的对角元素
>> diag(diag(D)) %内diag取D阵的对角元素,外diag利用它生成对角阵 ans = 1 0 0 0 1 0 0 0 1 >> randsrc(3,20,[-3,-1,1,3],1) %在[-3,-1,1,3]字符集上产生(3x20)的 %均匀分布数组,随机数发生器的状态设置为1 ans = Columns 1 through 18 3 1 3 -1 -3 3 -3 -3 -1 3 -1 -1 -3 1 1 -3 3 -1 1 3 1 3 -1 1 1 1 1 1 1 1 3 -1 -1 -3 -1 -1 3 -1 -3 -1 1 -1 3 -1 -1 1 1 -1 -3 3 -1 -1 3 -1 Columns 19 through 20 1 3 1 -3 3 3
>> B^(-1) ans = 0.8333 -0.6667 -0.1667 0.3333 >> B^(0.2) ans = 1.0862 0.3448 0.0862 1.3448
2.转置运算:
>> A=[1,2,3;4,5,6];B=[1+1i,1-3j,-5j];AA=A',BB=B',B_B=B.' AA = 1 4 2 5 3 6
例:>> ones(2,4) ans = 1 1 1 1 1 1 1 1 >> randn(„state‟,0) >> randn(2,3) ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 >> D=eye(3) D= 1 0 0 0 1 0 0 0 1 >> diag(D) ans = 1 1 1
3、定数线性采样法(linspace函数) 格式: X=linspace(a,b,n)
其中: a为数组第一个元素,b为最后一个元素,n为采样点数。
例:以-1为起始值, 3为终值,产生一个具有11个采样 点的“行”数组。
>> x=linspace(-1,3,11) x= Columns 1 through 10 -1.0000 -0.6000 -0.2000 1.8000 2.2000 2.6000 Column 11 3.0000
例1:
>> A=[1,2,3;4,5,6]; >> A-2 ans = -1 0 1 2 3 4 >> A*2 ans = 2 4 6 8 10 12 >> A/2 ans = 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
例2: >> B=[2,4;1,5]; >> B^2 ans = 8 28 7 29
A2 = 3 9 27 81 A3 = 1 4 3 16
二、数组的操作
1.数组的块操作:元素更改,插入子块,提取子块, 重排子块,扩充子块,扩充数组等,重点学会使用 “:”的应用。
例:A=[1,2,3;4,5,6];B= [7,8,9]; >> A(1,:)=B A = 7 8 9 4 5 6 >> A(:,:)=2 A = 2 2 2 2 2 2
第2章 数值数组及其运算
2.1 数值数组的创建、标识、查询和定位 2.2 数组的运算和操作 2.3 “无穷大”、“非数”和“空”数组
2.1 数值数组的创建、标识、查询和定位
数组的创建:多种
1、逐个元素输入法 1 9i 2 8i 3 7i 例如: 产生复数数组 B 4 6i 5 5i 6 4i
>> clear >> A = [1 2 3; 4 5 6; 7 8 9] >> B = [10 11 12] >> X = A\B 输出结果为:>> X=A\B ??? Error using ==> mldivide Matrix dimensions must agree 说明两个矩阵在维数上不匹配, 因而出现错误。
范德蒙(Vandermonde)矩阵
该矩阵的特点是最后一列为1,倒数第二列为一个指定的向量,其他各 列是其后列与倒数第二列的点乘积。 调用方法为vander(x),可用一个指定向量生成一个范德蒙矩阵 >> m = [2:5] >> vander(m) m = 2 3 4 5 ans = 8 4 2 1 27 9 3 1 64 16 4 1 125 25 5 1
ans = 0 -2.0000 -4.0000 0.5000 2.5000 4.5000
>> B/C
ans =
0.0000 2.3333 -0.3333 0 2.0000 0
>> clear >> A = eye(3) >> B = [1 2 3; 4 5 6; 7 8 9] >> X = A\B 程序的运行结果为: X= 1 2 3 4 5 6 7 8 9
>> A=[1,2;3,4;5,6] A= >> A(3,3) ??? Index exceeds matrix dimensions. >> A(5) ans = 4
数组的查询和定位
学会使用find指令进行数组元素的定位,以及指令length 和 size 的用法。 >> A=[1,3,5,7,9;2,4,6,8,0];B=[1,2,3,4,5,6]; >> C=[11,12,13;21,22,23;31,32,33;41,42,43]; >> [m,n]=find(A>6) m= 1 2 1 n= 4 4 5 >> k=length(B) k= 6
方 2.转置运算 3.数组加减法运算 4.数组乘法运算 5.数组除法运算 6.数组点运算 7.数组求幂运算
2.2 数组的运算和操作
二、数组的操作
1.数组的块操作: + 加;-减;*乘;/左除;^乘方 2.数组的翻转操作 3.数组运算常用数学函数
1.数组与标量的运算:
+ 加;-减;*乘;/右除;^乘方