目录
前言
数组的定义与生成
下一篇预告
前言
首先总结一下,前面几篇已经介绍了Matlab
在高等数学上、下册的基本应用,包括(点击红色字体可以查看链接):
“符号表达式,函数求极限,泰勒展开,函数求导,一元函数求积分
”
“二元函数符号表达式,绘制曲面图,解符号方程,求偏导数
”
以及
“二重积分,三重积分,级数求和,解常微分方程
”
我们知道Matlab
是矩阵实验室的意思,这是因为它在矩阵、数组计算方面具有其他编程语言无可比拟的优势!
因此,接下来我们将要介绍Matlab
在线性代数中的应用.(线性代数是大学数学必修课程系列,和高等数学一样也是考研必考科目。)
可以说,掌握线性代数知识以及基本的Matlab
矩阵操作是通往Matlab
高效编程的必经之路!
数组的定义与生成
首先,要知道数组是Matlab
中数据的基本存储与操作格式,一维数组就是线性代数中的向量,二维数组就是线性代数中的矩阵.向量的表现形式为一列数据(列向量)或者一行数据(行向量),而矩阵的表现形式为m
行n
列的数据.
Matlab
中生成一个数组可以有多种方法:
直接输入,并利用中括号
[]
将数据括起来,例如a=[1,2,3,4] % 行向量
b=[1;2;3;4] % 列向量得到行向量和列向量:
要注意的是,相同行的数据之间用**逗号
,
隔开;不同行的数据之间用分号;
**隔开。利用冒号
:
生成等距间隔的数据,格式为a:h:b
,即:a到b且间隔步长h的向量.例如,列出20以内的奇数,则有:
c=1:2:20 % 1到20,间隔2
得到:
想要得到列向量怎么办?很简单,转置就好了,
Matlab
中转置是加单引号’
.例如:d=(1:2:20)' % 转置得到列向量
得到列向量:
利用内置函数生成数组,包括:
linspace(a,b,n)
:生成一个从a到b的具有n个数的等距向量,例如:e=linspace(0,1,6) % 0到1,共6个数的行向量
zeros(m,n)
:生成一个m
行n
列的全零矩阵,例如:f=zeros(1,length(e)) % 生成一个与e具有相同长度的全零向量
得到一个和行向量
e
相同长度的全零向量:其中,
length(e)
函数可以获得向量e
的长度。值得注意的是,在编程时提前生成一个用来存放计算结果的全零向量,可以避免在循环语句中向量的长度一直在变化,从而减少计算时间,提高效率,这有点类似
C
语言中提前指定变量以分配内存的思想。ones(m,n)
:生成一个m
行n
列的全1矩阵,例如:g=ones(size(f)) % 生成一个与f具有相同维度的全1向量
得到一个和行向量
f
相同长度的全1向量:其中,
size(f)
函数得到数组f
的维度,f此时是1行6列的向量,因此返回[1,6]
,再利用ones
可以得到一个和f维度相同的全1向量g.eye(m,n)
:生成m行n列的单位矩阵(即对角元素为1,其他元素为0).例如:
E=eye(3,3) % 3阶单位矩阵
得到单位矩阵:
magic(n)
:生成n行n列的**“魔方”矩阵**(每一行之和、每一列之和、每一斜对角之和都相等的矩阵!)例如:
M=magic(4) % 4阶数魔方矩阵
得到:
读者可以验证是否满足“魔方”矩阵的性质。
rand(m,n)
:生成m行n列0到1的随机分布矩阵,例如:h=rand(2,3) % 2乘以3的随机矩阵
得到随机矩阵:
randi(Nmax,[m,n])
:生成一个m行n列的整数随机矩阵,且整数的最大值为Nmax
.例如,
k=randi(10,[2,3]) % 2乘以3的整数随机矩阵,最大值为10
randn(m,n)
:生成m行n列的正态分布矩阵。例如:
n=randn(1,5) % 1行5列的正态分布矩阵
得到:
利用已有的数组进行整体运算与赋值得到新的数组。
例如,在二维函数绘图中,我们首先定义离散坐标
x
向量,再由函数表达式得到对应的y
向量,紧接着用y
关于x
绘图。例如,下面绘制心形线:
首先我们要定义个向量来表示角度,紧接着利用写出每个角度处对应的
x
坐标和y
坐标,它们应当和角度向量具有相同维度!最后用y
关于x
绘图。t=linspace(0,2*pi,100); % 角度离散点
x=(1-sin(t)).*cos(t); % x坐标
y=(1-sin(t)).*sin(t); % y坐标
figure
plot(x,y,'r-*')得到:
注意我们利用了
.*
运算符号,该运算符可以说是Matlab
中最重要的几个运算符号之一!.*
运算符号表示的是两个相同维度的数组对应位置的元素相乘,和通常的矩阵乘法规则完全是两个概念。例如,
A=[1 2 3];
B=[1 1 1];
A.*B得到:
即为对应元素相乘的结果。
点乘运算符具有许多有用的功能,这在以后都将会介绍。
下一篇预告
矩阵的计算以及常用的矩阵编程技巧将在下一篇呈现!