Matlab数值数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4、矩阵加法
定义 设有两个m×n矩阵
a11
A


a21

a12 a1n
b11
a22

a2n

B


b21


b12 b1n
b22

b2n


am1
am2

amn
bm1
bm 2

bmn
a11 b11
矩阵 C
a a jn ) 1 j1 2 j2

anjn Det(aij )
an1 an2
ann
i a a 1 j1 2 j2 anjn是取自不同行、不同列的n个元素的乘积;
ii行标按自然顺序排列,列标排列的奇偶性 j1 j2 jn
决定每一项的符号;
iii 表示对所有的j1 j2 jn构成的n!个排列求和
生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n)
生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵
magic(n)
生成魔方数组,各行、列之和 = (1+2+……+n2 )/n
diag(v,k) rand(m,n) randn(m,n)
手工计算行列式是非常繁琐的,特别是高阶行列式。 Matlab中,行列式由函数 det( ) 实现。
练习:求下面的行列式
122
2
1 0 2 5
222
2
1 2 1 3
D1 2 1 0 1
D2 2 2 3
2
1 342
222
10
2、矩阵相等
定义 设有两个m×n矩阵
a11
A


a21
运算结果为与A同维的数组
练习:试写出下列matlab语句的输出结果,并在
matlab中进行验证。
A = ones(3) B = eye(3) C = zeros(3) D = (A+B).*(A-B) E = (D + 1) + (D - 1)*i F = E.’./E’ + E.’.\E’ G = B.^D + D.^B
4、函数作用在数组上的运算规则
Matlab中的很多函数都可以直接以数组作为输 入参数,函数输出也为数组。
x11 x12 ... x1n
X


x21
...
x22 ...
... ...
x2n


...
xij
mn

xm1
xm2
...
xmn

f X f xij mn
若A的元素均为实数,则A.’与A’的结果相同
B = A.’
对数组A做转置运算,将运算结果赋值给变量 B,内存中数组A的内容并没有任何变化。
2、两个维数相同的数组之间的数组运算
• A + B:加,对应位置的数组元素相加 • A - B:减,对应位置的数组元素相减 • A.*B:点乘,对应位置的数组元素相乘 • A./B:右点除,对应位置的数组元素相除 • A.\B:左点除 • A.^B:点幂,对应位置的数组元素做幂运算

y2




f yn
输入为二维数组,则输出也为二维数组
a11
A


a21
a12 a22
a13
a23

,
f
A



f f
a11 a21
f a12 f a22
f f
a13 a23



a31 a32 a33
Matlab数值数组
一、创建数值数组 二、数组操作函数 三、数组运算 四、矩阵运算 五、数组的访问和赋值 六、与数组相关的函数 七、一维数组在向量运算中的应用 八、一维数组在一元多项式运算中的应用
一、创建数值数组
数值数组(简称为数组)是Matlab中最重要的一种 内建数据类型。
二维数组(array)是由实数或复数排列成矩形而构成的, 从数据结构上看,二维数组和矩阵没有什么区别。当二维数组 带有线性变换含义时,该二维数组就是矩阵(matrix)。
三、数组运算
• 数组运算是Matlab软件定义的运算规则, 其目的是为了数据管理方便、操作简单、 指令形式自然和执行计算的有效。
• 无论在数组上施加什么运算(加减乘除或函 数),总认定那种运算对被运算数组中的每 个元素(Element)进行运算。
1、转置运算
A.’ 对A做转xT 置(行→列,列→行)即AT A’ 对A做共轭转置 即A†
B= 1000 0200 0030 0004 -4 0 0 0 0 -3 0 0 0 0 -2 0 0 0 0 -1
二、数组操作函数
把“大小”相同的若干数组,沿“指
cat(dim, A, B) 定维”方向,串接成高维数组 。
行(dim=1) 列(dim=2)
diag(A,k)
A 是矩阵,则 diag(A,k) 返回A的第k条对角 线元素组成的列向量,k省略时,k = 0。
输入为行数组,则 输出也为行数组
输入为列数组,则 输出也为列数组
X x1, x2 , , xn
f X f x1 , f x2 , , f xn
y1
Y


y2

,

yn
f y1
f
Y



f
3
说明:直接输入矩阵时,每行元素用
空格或逗号分隔,矩阵行用分号分隔,
4
5
6 整个矩阵放在方括号里,标点符号一
7
8
9 定要在英文状态下输入。二维数组一
般用大写字母表示。
3、用方括号[ ]由一维数组创建二维数组
a = [1,3,5] b = [2,4,6] c = [3,5,7]
D = [a;b] E = [b;c] F = [D,E]
Matlab中,标量和向量一般用小写字符字母表示
1、用方括号[ ]创建一维数组
• 整个数组放在方括号里 • 行数组元素用空格或逗号分隔
x = [2, pi/2, sqrt(3), 3+5i] • 列数组元素用分号分隔
y = [2;pi;3/4;j] • 标点符号一定要在英文状态下输入 • x = [] 生成空数组
4、用冒号:创建一维数组
• x = a:b
默认 inc = 1
• x = a:inc:b
a,b必须为实数
x = [a,a+inc,a+2*inc,…]
a是数组x中的第一个元素,b不一定是数组x 的最后一个元素。
5、用linspace()函数创建一维数组
x = linspace(a,b) x = linspace(a,b,n)
默认 n = 100
在[a,b]区间内生成 n 个数据,包括a和b在内
若a,b为实数,等效于: x a : b a : b n 1
x = linspace(0,pi,10) x = linspace(1+i,100+100*i)
6、用logspace()函数创建一维数组
x = logspace(a,b)
A = [1,2;2,1] if ( isequal(A,A.’) == 1)
disp(‘A是对称矩阵’) else
disp(‘A不是对称矩阵’) end
A = [0,1;-1,0] if ( isequal(A,-A.’) == 1)
disp(‘A是反对称矩阵’) else
disp(‘A不是反对称矩阵’) end
默认n = 50
在10a ,10b 间生成50个数据
x = logspace(a,b,n)
在10a ,10b 间生成n个数据
x = logspace(a,pi)
在10a , 间生成n个数据
7、创建特殊数组的函数
zeros(m,n) ones(m,n) eye(m,n)
生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)
x
x sin 3t
3、绘制

y

sin

2t


4

的图像,t

0,
2
.
四、矩阵运算
由m n个数aij构成的m行n列数表
a11 a12 a1n
A


a21
a22

a2n


am1
am2

amn
称为维(型)是m n的矩阵(matrix),简称为m n矩阵.
rot90(A,k)
逆时针旋转 k×90 度
reshape(A,m,n)
在总元素数不便的前提下,改变数 组的“行数、列数”
tril(A)
保留一个矩阵的下三角部分的数据, 其余的数据被0替换
triu(A)
保留一个矩阵的上三角部分的数据, 其余的数据被0替换
练习:试写出下列matlab语句的输出结果,并在
flipud(A)
以数组“水平中线”为对称轴,交换 上下对称位置上的数组元素
fliplr(A)
以数组“垂直中线”为对称轴,交换 左右对称位置上的数组元素
kron(A,B)
按Kronecker乘法规则(直积)产生 “积”数组
repmat(A,m,n)
按指定的“行数、列数”铺放模块 数组,以形成更大的数组
Matlab中,矩阵相等可用函数 isequal(A,B) 来判断。若两矩阵 相等,则isequal返回逻辑1(true),否则返回逻辑0(false)
3、矩阵转置、共轭转置运算
A’
矩阵共轭转置
A.’
矩阵转置
转置的运算级别比加、减、乘、除等运算高
对称矩阵:一个矩阵与其转置矩阵相等, 反对称矩阵:一个矩阵与其转置矩阵的和为零矩阵
f a31 f a32 f a33
例题:绘制 y = sin(x) 的图像
x = 0:0.1:2*pi y = sin(x)
函数作用在一维数组上
plot(x,y)
练习:
1.、绘制 y x sin x 的图像,x 8 ,8 ;
2、绘制 y sin x 的图像,x 8 ,8 ;
2、用方括号[ ]创建二维数组
1 2 3 例:简单矩阵A 4 5 6的输入步骤。 (1)在键盘上输入下列内容 7 8 9
A = [1,2,3; 4,5,6; 7,8,9]
(2)按【Enter】键,指令被执行。 (3)在指令执行后,MATLAB指令窗中将显示以下结果:
A=
1
2
matlab中进行验证。
a = 1:12 B = reshape(a,3,4) C = rot90(B) d = diag(C) E = diag(d) F = [tril(B);triu(B)] G = cat(2,tril(C),triu(C)) H = repmat(a,4,1) I = flipud(G) J = kron(d,E)

am1
a12 a22

am2
a1n

a2n



amn
b11
B


b21

bm1
b12 b22

bm 2
b1n

b2n



bmn
若 aij bij (i 1,2,, m; j 1,2,, n)
则称矩阵A和B相等. 记作A=B
运算结果为与A、B同维的数组
3、数组的与标量 的运算
• A + c :A的每个元素加c • A - c: A的每个元素减c • A.*c 或 A*c:A的每个元素乘c, • A./c 或 A/c: A的每个元素除以c • A.\c 或 A\c:c除以A的每个元素 • A.^c:点幂, A的每个元素做幂运算 • c.^A:点幂,c做幂运算
一维数组是矩阵的特殊形式
• 行数组:n个元素排成一行
又称为行向量(row vector)
在Matlab中作为 1 X n 矩阵 • 列数组:m个元素排成一列
又称为列向量(column vector)
在Matlab中作为 n X1 矩阵 • 一个数:
又称为标量 在Matlab中作为 1 X1 矩阵
一般情况下,向量指列向量
记为
A (aij )mn , Amn 或 A (aij ),
其 中aij为 矩 阵 的 第i行 第j列 元 素.
i称为行标i 1,2,, m,j称为列标j 1,2,, n.
1、方阵的行列式
n 阶行列式的定义:
a11 a12 D a21 a22
a1n
a2n (1) ( j1 j2
v是向量,diag(v,k) 产生以 v 为第k条对角线的矩阵, k省略时,k = 0
产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 r Nhomakorabeand(n)
产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
diag(v,k)
练习:在matlab中生成二维数组
A= 000 000 000 111 111 111
相关文档
最新文档