MATLAB2019快速⼊门教程(官⽅⼿册翻译)(24)2 语⾔基础
2.1 矩阵与⽅阵
(Matrices and Magic Squares)
2.1.1 矩阵
这幅图是⽤数学符号表⽰的,如果你仔细看,你会在右上⾓看到⼀个矩阵。这个矩阵被称为⽅阵,在 Dürer 的时代,很多⼈认为它具有真正的魔法属性。它确实有⼀些迷⼈的特征值得探索。
2.1.2 输⼊矩阵
快速⼊门 MATLAB 的最好⽅法是学习处理矩阵,并学习每个例⼦。
输⼊⼀个显式的元素列表。
从外部数据块加载矩阵。
使⽤内置函数⽣成矩阵。
⽤⾃⼰的函数创建矩阵,并将它们保存在⽂件中。
⾸先输⼊ Dürer 矩阵的元素列表。你只需要遵循⼀些基本的惯例:
⽤空格或英⽂逗号分隔⼀⾏中的元素。
使⽤英⽂分号 ; 表⽰每⼀⾏的末尾。
⽤⽅括号[]包围整个元素列表。
要输⼊ Dürer 矩阵,只需在命令窗⼝中键⼊以下⼀串代码即可:
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
MATLAB 显⽰您刚刚输⼊的矩阵:
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 1
5 14 1
这个矩阵与 Dürer 矩阵的数字相匹配。⼀旦您输⼊了矩阵,它就会⾃动地被存储在 MATLAB ⼯作空间中。你可以简单地标记它为 A。
现在您已经在⼯作区中有了⼀个 A,接下来看看是什么让它如此有趣,为什么是⽅阵(magic)?
2.1.3 求和,转置和对⾓线转列向量函数
(sum, transpose 和 diag)
您可能已经意识到⽅阵与求和元素的各种⽅法有关的特殊性质。如果沿着任意⾏或列、或沿着两个对⾓线中的任意⼀个⽅向求和,总是会得到相同的数。
让我们⽤ MATLAB 来验证⼀下。要尝试的第⼀个语句是:
sum(A)
MATLAB 返回结果:
ans =
34 34 34 34
matlab软件怎么使用当不指定输出变量时,MATLAB 默认使⽤变量 ans (answer 的缩写)存储计算结果。您已经计算了⼀个⾏向量,其中包含 a 的列的和。每⼀列都有相同的和,即⽅阵的和:34。
如果对⾏求和呢? MATLAB 更偏好处理矩阵的列,所以对⾏求和⼀种⽅法是转置矩阵,对计算转置矩阵的列求,然后再转置结果得到答案。
MATLAB 有两个转置运算符号:
“撇号”运算符(例如,A’ )执⾏复共轭换位。它使⼀个矩阵围绕主对⾓线翻转,并且改变了矩阵中任意⼀个复杂元素的虚分量的符号。
点撇号运算符(例如 A.’ )在不影响复杂元素符号的情况下进⾏转置。对于包含所有实数元素的矩阵,这两个操作符返回相同的结果。
因此当输⼊:
A'
结果是:
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
当输⼊:
sum(A')'
结果是只有⼀⾏的列向量:
ans =
34
34
34
34
要想避免两次转置的⾏来求和的另⼀种⽅法是使⽤ sum 函数的多维参数⽅法:
sum(A,2)
结果是:
ans =
34
34
34
34
主对⾓线上元素的求和⽅法由 sum 和 diag 函数组合使⽤得到的:
diag(A)
结果是:
ans =
16
10
7
1
然后:
sum(diag(A))
结果是:
ans =
34
您已经验证了 Dürer 版画中的矩阵确实是⼀个⽅阵(a magic square),并且在此过程中,已经练习了⼀些 MATLAB 的矩阵运算。下⾯的部分将继续使⽤这个矩阵来说明 MATLAB 的其他功能。
2.1.4 矩阵函数
MATLAB 实际上有⼀个内置函数,可以创建⼏乎任何⼤⼩的⽅阵,因此,这个函数被命名为 magic :
B = magic(4)
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 1
5 1
这个矩阵⼏乎和 Dürer 版画上的⼀样,⽽且都有“ magic ”(⽅阵)的性质;唯⼀的区别是中间的两列交换了位置。
你可以把 B ⽅阵的中间两列互换位置,变成 Dürer A ⽅阵。⽅法是:把 B ⽅阵的每⼀⾏按 1、3、2、4 的顺序重新排列列:
A = B(:,[1 3 2 4])
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 1
5 14 1
2.1.5 矩阵的产⽣
MATLAB 软件提供了四个⽣成基本矩阵的函数。
zeros 所有元素都为 0 ;
ones 所有元素都为 1 ;
rand 均匀分布随机元素;
randn 正态分布随机元素。
下⾯举⼀些例⼦:
Z = zeros(2,4)
Z =
0 0 0 0
0 0 0 0
F = 5*ones(3,3)
F =
5 5 5
5 5 5
5 5 5
N = fix(10*rand(1,10))
N =
9 2 6 4 8 7 4 0 8 4
R = randn(4,4)
R =
0.6353 0.0860 -0.3210 -1.2316
-
0.6014 -2.0046 1.2366 1.0556
0.5512 -0.4931 -0.6313 -0.1132
-1.0998 0.4620 -2.3252 0.3792
2.2 表达式
2.2.1 变量
与⼤多数其他编程语⾔⼀样,MATLAB 语⾔提供数学“表达式”,但与⼤多数编程语⾔不同的是,这些表达式是对整个矩阵进⾏运算的。
MATLAB 不需要任何类型声明或指明多少维度语句。当 MATLAB 遇到⼀个新的变量名时,它会⾃动创建该变量并分配适当的存储空间。如果变量已经存在,MATLAB将更改其内容,并在必要时分配新的存储空间。例如:
num_students = 25
这句表达式的作⽤是创建⼀个名为 num_students 的 1×1 矩阵,并将值 25 存储在其单个元素中。要查看分配给任何变量的矩阵,只需输⼊变量名即可。
变量名由字母加任意个数的字母、数字或下划线构成,区分⼤⼩写。例如:A 和 a 不是同⼀个变量。
虽然变量名可以是任意长度,MATLAB 只使⽤名称的前 N 个字符(其中 N 是函数 namelengthmax 返回的数字),⽽忽略了其余的字符。因此,每个变量名的前 N 个字符构成的名称必须是是唯⼀的,以便 MATLAB 能够区分变量。
N = namelengthmax
N =
63
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论