概述
Matlab:
矩阵用方括号[]表示,元素之间用”,” 或者 空格 隔开,行与行之间用分号“;”隔开:
mat = [
1 2 3 4;
4 5 6 7
]
或者
mat = [
1,2,3,4;
4,5,6,7
]
行向量:
row=[1 2 3 4]
列向量(行向量的转置):
column=[1 2 3 4]'
获得矩阵或者向量中的元素用小括号 ():
v = [1 2 3 5];
x = v(1);
x = v(1:4); %获得从第一个到第四个元素得到一个行向量
mat = [
1 2 3;
4 5 6
];
x = mat(1,2); %第一行第二列元素
row = mat(1,:); %第一行的所有元素
注意:mat中不存在临时变量,所以下列代码会报错:
v1 = [1 2 3];
v2 = [4 5 6];
x = (v2-v1)(1); %出错,必须使用一个变量保存 v2-v1 然后再取该变量的值
Mathematica
Here is a sample matrix and vector:
mat = Array[a, {3, 3}]
{
{a[1, 1], a[1, 2], a[1, 3]}, // 矩阵的第一行
{a[2, 1], a[2, 2], a[2, 3]}, // 矩阵的第二行
{a[3, 1], a[3,2],a[3, 3]} // 矩阵的第三行
}
// 既不是行向量也不是列向量,为一个列表
vec = {1, 2, 3};
vec is neither a row vector nor a column vector. It is just a vector.
Mathematica treats it properly by context. Here it is treated as a column
vector in the usual textbook representation.
// 这里把列表当做一个列向量,以为其在矩阵右侧
mat.vec
{ a[1, 1] + 2 a[1, 2] + 3 a[1, 3], a[2, 1] + 2 a[2, 2] + 3a[2, 3] }
But if we put the vector before the matrix, Mathematica treats it as a row
vector.
// 这里把列表当做一个行向量,因为其放在矩阵左侧
vec.mat
{
a[1, 1] + 2 a[2, 1] + 3 a[3, 1],
a[1, 2] + 2 a[2, 2] + 3 a[3, 2],
a[1, 3] + 2 a[2, 3] + 3 a[3, 3]
}
If we want the dot product of the vector with itself, we just write…
// 点乘
vec.vec
14
If we want to convert the vector to a one row matrix we write…
// 显示将一个列表转成一个行向量(也就是单行的矩阵)
{vec}
{{1, 2, 3}}
If we want to convert the vector to a one column matrix we write…
// 转置,变为列向量(单列的矩阵)
Transpose[{vec}]
{{1}, {2}, {3}}
We could use matrix multiplication on these to generate a 3x3 matrix.
// 列向量乘以行向量得到一个矩阵
Transpose[{vec}].{vec}
{{1, 2, 3}, {2, 4, 6}, {3, 6, 9}}
Or obtain the dot product, in a rather silly way, as a 1x1 matrix.
// 行向量乘以列向量得到一个值(也就是单行单列的矩阵?)
{vec}.Transpose[{vec}]
{{14}}
在Mathematica中 “.” 为矩阵或者向量相乘,不是“*”,还有,要获得矩阵乘积为一个矩阵如 C=A.B 则不能在之前加//MatrixForm,否则结果为 A.B 的形式而不是 矩阵C,因为MatrixForm优先级高,会改变矩阵的显示格式。
v0加了MatrixForm,所以导致v1的结果表示为两个矩阵相乘:
去掉v0处的MatrixForm,得到计算结果:
“*”类似matlab中的.*,即每个元素对应相乘:
在行尾加上分号“;”可以抑制显示,这点跟matlab一样。
矩阵(或者列表)操作:
m[[i,j]] // 第i,j个元素
m[[i]] // 第i行
m[[All,i]] // 第i列
Take[m,{i0,i1},{j0,j1}] // 第i0行到第j0行、第i0列到第j0列构成的子阵
m[[i0;;i1,j0;;j1]] // 第i0行到第i1行、第j0列到第j1列构成的子阵
m[[{i1,…,ir}, {j1, … , js}]] // 行标为ik、列标为jk的元素构成的 r×s 子阵
Tr[m,List] // 对角线上的元素
ArrayRules[m] // 非零元素的位置
最后
以上就是丰富灯泡为你收集整理的matlab 行 列表示,Matlab & Mathematica 向量(行,列) 矩阵的全部内容,希望文章能够帮你解决matlab 行 列表示,Matlab & Mathematica 向量(行,列) 矩阵所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复