0%

freemat使用说明

freemat

变量与数组

矩阵

单行/一维矩阵创建

1
2
--> a=[val1,val2,val3,...valn]
--> a=[val1 val2 val3 ...valn]

多行/多维矩阵创建

1
2
3
4
--> a=[val1 val2 val3;val4 val5 val6;val7 val8 val9]
--> z=zeros(5,1)
--> o=ones(7,8)
--> r=rand(3,8)

矩阵运算

常规运算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
--> a+10
ans =
11 12 13
14 15 16
17 18 19
--> a*10
ans =
10 20 30
40 50 60
70 80 90
转置矩阵
1
2
3
4
5
--> a'
ans =
1 4 7
2 5 8
3 6 9
修改矩阵
1
2
3
4
5
--> a(3,3)=10
a =
1 2 3
4 5 6
7 8 10
逆矩阵
1
2
3
4
5
--> inv(a)
ans =
-0.6667 -1.3333 1.0000
-0.6667 3.6667 -2.0000
1.0000 -2.0000 1.0000
矩阵相乘
1
2
3
4
5
--> a*inv(a)
ans =
1.0000 0 -0.0000
0 1.0000 0
0 0 1.0000
修改精确度

精确度表

命令含义
format short精确到小数点后四位
format long精确到小数点后十六位
format rat用有理数模拟逼近无理数
format short e用科学计数法表示,且精确到小数点后四位
format long e用科学计数法表示,且精确到小数点后十六位
1
2
3
4
5
6
--> format long
--> a*inv(a)
ans =
1.00000000000000 0 -0.00000000000000
0 1.00000000000000 0
0 0 1.00000000000000
水平串联
1
2
3
4
5
--> A=[a a]
A =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 10 7 8 10
垂直串联
1
2
3
4
5
6
7
8
--> A=[a;a]
A =
1 2 3
4 5 6
7 8 10
1 2 3
4 5 6
7 8 10
数组索引

数组索引不和普通数组一样从0开始索引,例如二维数组,第一个元素就是A(1,1)

1
2
3
--> A(1,1)
ans =
1
解除变量

clear A

结构索引
1
variable.fieldname='value'
字段方法
1
2
3
fieldname
getfield(variable,'field')
setfield(variable,'field')
struct结构体数组
fieldnames结构体的字段名称,或者 Java 或 Microsoft COM 对象的公共字段
getfield结构体数组字段
isfield确定输入是否为结构体数组字段
isstruct确定输入是否为结构体数组
orderfields结构体数组的顺序字段
rmfield删除结构体中的字段
setfield为结构体数组字段赋值
arrayfun将函数应用于每个数组元素
structfun对标量结构体的每个字段应用函数
table2struct将表转换为结构体数组
struct2table将结构体数组转换为表
cell2struct将元胞数组转换为结构体数组
struct2cell将结构体转换为元胞数组

单元数组

单元数组定义

单元数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便;需要注意的是,单元数组仅仅是承载其他数据类型的容器,大部分的数学运算只是针对其中的具体数据进行的,而非针对单元数组本身进行。单元数组中的每一个元素称为单元(cell),单元可以包含任何类型的数据,如数值数组、字符、符号对象,甚至于其他的单元数组。单元数组可以使不同类型和不同维数的数组可以共存,细胞型数组实际上可以认为是一种以任意形式的数组为分量的多维数组。

单元数组的赋值

1
A={row_def1;row_def2;row_def3;...row_defi}

单元定义的赋值

1
row_defi= element_i1,element_i2,element_i3...element_iM
恰饭,恰饭