第二讲 数组及矩阵运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲
数组及矩阵运算
数值数组(矩阵)及其运算是MATLAB的核心。它可以使计算程序简单、易读,使程序更接近于教科书上的数学计算公式,这也是理工科学生最需要的。另外,它提高了程序的向量化程度,提高计算效率,节省计算
机的开销。
注意:矩阵与二维数组在形式上相同,但不同于数组,矩阵具有特定的含义和运算方式。
>>x1=[0,0.1,0.2,0.3,0.4,0.5]%简单的一维数组>>y1=x1.*exp(-x1)%数组的乘积运算>>x2=rand(1,4) %产生4个随机数,构成行向量>>x=[1 2 3; 4 5 6; 7 8 9]
%二维数组,也可认为是3行2列的矩阵x=
1 2 3
4 5 6
7 8 9
一、数值数组的创建
1. 一维数组的创建
逐个元素输入法
这是最简单又最通用的方法,用中括号[ ]表示,输入元素以空格或逗号为间隔。
函数生成法
利用MATLAB提供的特殊形式的数组/矩阵函数来生成。
特点:数组元素的大小按递增或递减的次序排列,元素之间的“差”是“等步长”的。
作用:用作函数的自变量,for循环中的循环自变量等。
1)“冒号:”生成法
x=a :inc :b
其中:inc 是采样点间隔,即步长,默认值为1。
递增/递减型一维数组的创建
2)线性或对数定点法
¾x=linspace(a,b,n) 线性等间隔为1×n行数组
其中:
a,b为左右端点,n为总采样点数,即一维数组的长度,它等价于x=a:(b-a)/(n-1):b
¾x=logspace(a,b,n) 对数等间隔为1×n行数组
例1:产生一个从0到10的数组,间隔为2 >>a=0:2:10
a=
0 2 4 6 8 10
>>b=linspace(0,10,6)
b=
0 2 4 6 8 10
例2:以对数等分隔
>>ak=logspace(0,1,5)
ak=
0 10 10^2 10^3 10^4
2. 二维数组的创建
小规模数组的直接输入法
•整个输入组必须以方括号[ ]为其首尾;•行与行之间必须用分号;或[Enter]键隔离;•数组元素间必须用逗号或空格分隔;
•若元素之间有复数,则元素间不能用空格;
中规模数组的数组编辑器创建法
数组创建之后,将其保存为Matrix.mat文件。使用时,只要在指令窗中输入load Matrix.mat(可不加文件后缀名)或利用菜单导入数据即可。
中规模数组的M文件创建法
打开文件编辑器,输入数组,并保存此文件(如MyMatrix.m)。那么以后使用时,只要在指令窗中直接输入指令MyMatrix,就可运行该文件,数组也会自动生成。
常用的标准数组生成函数
生成各种分布随机数组产生全0数组产生全1数组产生正态分布随机数组产生均匀分布随机数组产生魔方数组(对高维不适用)产生单位数组(对高维不适用)eye
产生对角数组(对高维不适用)diag
利用MATLAB 函数创建
%产生(2×3)的全1数组>>ones(2,3)
ans=
1 1 1
1 1 1
%产生(2×3)的正态随机阵>>randn(2,3)
ans=
-0.4326 0.1253 -1.1 465
-1.6656 0.2877 1.1909%产生(3×3)的单位数组>>D=eye(3),diag(D)
D=
1 0 0
0 1 0
0 0 1
ans= 1 1 1
%产生对角数组
>>diag(diag(D))
ans=
1 0 0
0 1 0
0 0 1
3. 二维数组的标识和寻访
数组是从1开始进行编址的,比如x(n)表示第n个元素。
)3(x )3:1(y
)8:2:3(y )7,2,5(y %提取数组的第三个元素
%提取数组从第一到第三个元素
%提取数组从第三开始加2计算,到第八个元素
%提取数组由(5,2,7)标明下标的数。
例如:
寻访,生成一维列数组(由0和1组成);
指定的一维数组,若s 是“行/列数组”,就是长度相同的行/列数组左向右的次序首尾相接而成单下标)
指A 的第c 列的全部元素A(:,c )指A 的第r 行上的全部元素A(r ,:)指A 的第r 行、第c 列的元素(双下标)A(r,c )中的例3.2-6)
二、矩阵及其运算
1.创建方法:
与二维数组的生成方法相同。
eye(n) %生成n维的单位矩阵
eye(m,n) %生成m×n维的单位矩阵
eye(size(A)) %生成与A同维的单位矩阵例如:>>A=[1,2,3;4,5,6;7,8,9]
>>size(A) %显示矩阵A的大小(3行、3列)
>>eye(size(A))
ans=1 0 0
0 1 0
0 0 1
>>diag(1,2,3) %生成3阶对角阵,对角线
元素为1,2,3
⎟⎟⎟⎠
⎞⎜⎜⎜⎝⎛300020001例:4阶赫尔伯特矩阵
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎠
⎞716
15
1615141514131413121