1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > matlab 行 列表示 Matlab Mathematica 向量(行 列) 矩阵

matlab 行 列表示 Matlab Mathematica 向量(行 列) 矩阵

时间:2024-02-29 14:05:51

相关推荐

matlab 行 列表示 Matlab  Mathematica 向量(行 列) 矩阵

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] // 非零元素的位置

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。