这是之前写的存货......有一段历史了?
----正文----
生成矩阵
下面是几种矩阵的生成方法:
1、直接输入
输入示例
A=[1 2 3; 4 5 6;7 8 9]或
A=[1,2,3;4,5,6;7,8,9]
直接输入矩阵时:分号分格每行,空格或逗号分隔每个元素。
2、使用函数
zeros(m,n) | 生成一个元素全为0的m*n的矩阵 | |
ones(m,n) | 生成一个元素全为1的m*n的矩阵 | |
eye(n) | 生成一个n阶单位矩阵 | |
rand(m,n) | 生成一个元素在0和1之间均匀分布的m乘n阶随机矩阵 | |
randn(m,n) | 生成一个零均值单位方差正态分布的m乘n阶随机矩阵 | |
pascal(n) | 生成一个n阶帕斯卡矩阵 注:帕斯卡矩阵是把杨辉三角形放在矩阵里 | |
magic(n) | 生成一个n阶魔方矩阵 注:魔方矩阵的每行,每列,包括对角线它们的和相等 |
注:仔细观察可以发现,当你所使用的函数并不给任何一个变量赋值时,它将会默认为变量ans赋值。
向量的生成
1.使用linspace函数
格式:y=linspace(a,b【,n】)
功能:产生一个行向量y,该向量把a和b之间的数n等分而得。
注:当n值缺省时,默认100等分。另:我用方头括号框住公式中可有可无的部分,实际输入时不要输入方头括号。
注:所得到的结果没有一个含有小数部分时,那他们将会被表示为整数;当其中任何一个包括小数部分,那他们都会被表示为小数,一般默认的是short类型,精确到后4位。
2.与他有类似功能的增量语句
格式:var=[a:【s:】b]
其中a为初始,值b为中值值,s为(每一次的)增量,s=(b-a)/(s-1)。s可以省略,省略时默认为1。
3.使用logspace函数
格式:y=logspace(a,b【,n】)
作用:产生一个行向量y,该向量由n个10的a次方和10的b次方间的对数间隔点构成。当n的值未给定时,n默认为50。
//讲真的,我并不明白这个是干嘛用的。放一波原文让你感受一下:
logspace Logarithmically spaced vector.
logspace(X1, X2) generates a row vector of 50 logarithmically
equally spaced points between decades 10^X1 and 10^X2. If X2
is pi, then the points are between 10^X1 and pi.
注:列1~9只是告诉你这是一个行向量,但是表示时在中间换行了。
矩阵的结构操作
A(m,n) | 提取矩阵a的第m行第n列元素 | |
A(:,n) | 提取矩阵a的第n列元素 | 注:冒号表示该行或该列的全部元素 |
A(m1:m2,n1:n2) | 提取矩阵a的第m1行到第m2行和第n11列到第n2列的所有元素 | |
A(:) | 一个很长很长的列向量(网课里管他叫 长列向量),这个向量是把矩阵a的每一个列向量拼凑到一个列向量上 | |
reshape(A,m,n) | 当矩阵a的元素重组,形成m行n列的矩阵 注:顺便说一下,这个重组后的矩阵必须和重组前的矩阵所容纳的元素数量是相同的,也就是说,从矩阵a转化为矩阵b并没有元素的丢失,它们只是按照列的顺序重新排列在b上了了。 | |
repmat(A,m,n) | 将矩阵a复制m乘n块及新矩阵是由m乘n个a平铺而成的 |
triu(A) | 提取矩阵的上三角部分 | |
tril(A) | 提取矩阵的下三角部分 | |
diag(A) | 提取矩阵的对角线上的元素 | |
fliplr(A) | 将矩阵a左右翻转 | |
flipud(A) | 将矩阵A上下翻转 | |
rot90(A【,k】) | 将矩阵A整体逆时针旋转k*90度 若k取负数,则为顺时针旋转 |
矩阵的增删变化
下以下展示的操作都是连续的,所以我不再展示原矩阵。
1.给矩阵增加一列
2.给矩阵增加一行
注意:添加对应行或列时,需要按照原矩阵的”规格“添加。
3.在矩阵的第二、三行之间新建一行
注:多么繁杂的操作,我也不知道会不会有更简单的,要是你找到了告诉我一下哈。
4.在矩阵中删除某一行
注意:你没有办法以类似的方式删除某一个元素。
矩阵的运算方法
1.矩阵的左乘和右乘
%注:B=round(rand(m,n)*z是一个有趣的生成随机矩阵的方法,具体的原理你可能已经在其他有求随机数需要的地方学习过了,不再详细叙述。
2.矩阵的加减
3.我之前说过的——诡异的群运算
这是由两个矩阵,各个相应位置的元素相乘,所得到的矩阵
4.方阵的行列式和逆矩阵的计算
5.矩阵的行最简形和矩阵的秩
由下面这样的一种特殊形式,我们所得到的jb变量,指的是矩阵中线性无关的列向量
6.方阵的特征值与特征向量
这东西还没学,我听不懂,如果有兴趣你可以自己看:
函数eig可以求得方阵的特征值和特征向量
调用格式为
d=eig(A)或[V,D]=eig(A)
其中d为列向量,其元素为矩阵a的特征值,矩阵d为矩阵a特征值所构成的对角阵,矩阵v的列向量为矩阵a的单位特征向量,它与D中的特征值一一对应
7.Matlab提供的更多针对矩阵的运算
//还没完?!放我去睡觉,我不想打字了
dot(A,B) | 矩阵的点乘积 | |
cross(A,B) | 向量的叉乘积 | |
trace(A) | 矩阵的迹 注:就是对角线上各元素的值的和 | |
length(A) | 矩阵的行数和列数的最大值 | |
size(A) | 矩阵的行数和列数 |
注:特殊情况我们说,cross用于向量的叉乘,但是,如果我们使用矩阵参与运算呢?下面是实际的结果:
为什么会产生这样的结果呢?或许下面会给你一些提示。
Ans:这是对应位置的列向量叉乘构成的矩阵。
最初于2019年11月10日 23:07:10编辑完毕。
后记:
一共在公众号内发布了2篇关于MatLab的入门教程,可能只够应付高校的(非相关专业的)数学课程(拓展)。关于MatLab的内容星期天不再更新。通过矩阵的转换求方程的解这个东西我已经忘完了……有时间星期天再复习一下。