Matlab 总结
注意事项
Matlab中,乘号*
不可省略
单引号'
可用于转置,A’
用.*
时,不用考虑转置以匹配维度
Matlab中无一维数组,都是1×x或者x×1维度的二维数组
函数
数组操作
size()
size(A, dim)
返回数组某一维度上的长度
arrayfunc()
arrayfunc(A, function)
针对数组/矩阵的每个元素进行操作。
@
@ <x> <y>
类似 Python 中的 lambda
函数,是一种简洁的写法。
数据类型
whos
whos variable
显示变量 variable 的大小和类型
whos
显示当前所有变量的大小和类型
随机数
rand()
rand
返回一个在区间 (0,1) 内均匀分布的随机数。
rand(x,(y))
返回一个 x×y (x×x) 的随机数矩阵。
笔记:要生成 U(a,b) 分布,使用 a+(b-a)*rand
.
randn()
randn
返回一个标准正态分布的随机数。
randn(x,(y))
返回一个 x×y (x×x) 的随机数矩阵。
笔记:要生成 N(μ,σ) 分布,使用 mu+sigma*rand
.
normrnd()
normrnd(mu,sigma)
返回一个正态分布 N(μ,σ) 的随机数。
结构
遍历数组元素
1
2
3
4
5
6
v=[1,4,6,4,1];
s=0;
for ve=v
s=s+ve;
end
disp(s);
结果: 16
输入输出
格式化输出
fprintf((fid), format, variables)
1
2
a = 1:10;
sprintf('%d ',a)
1
2
3
ans =
1 2 3 4 5 6 7 8 9 10
sprintf(format, variables)
1
2
a = 1:10;
fprintf('%d ',a)
1
1 2 3 4 5 6 7 8 9 10
区别
fprintf()
是输出函数,返回值是字符串的长度;
sprintf()
是字符转换函数,返回值是字符串本身。
1
2
3
a = 1:10;
s = sprintf('%d ',a); % 此行不会输出
disp(s)
1
1 2 3 4 5 6 7 8 9 10
1
2
3
a = 1:10;
s = fprintf('%d ',a); % 此行会输出
disp(s)
1
1 2 3 4 5 6 7 8 9 10 21
格式化输出的占位符
Formatting Text - MATLAB & Simulink
转换类型
设定符 | 用法 |
---|---|
c | 单个字符。 |
d | 十进制记数法(有符号)。 |
e | 指数记数法(使用小写 e,如 3.1415e+00 中一样)。 |
E | 指数记数法(使用大写 E,如 3.1415E+00 中一样)。 |
f | 定点记数法。 |
g | 更紧凑的 %e 或 %f。(将不输出无意义的零。) |
G | 与 %g 相同,但使用大写 E。 |
o | 八进制记数法(无符号)。 |
s | 字符向量或字符串数组。 |
u | 十进制记数法(无符号)。 |
x | 十六进制记数法(无符号,使用小写字母 a–f)。 |
X | 十六进制记数法(无符号,使用大写字母 A–F)。 |
例如,使用不同的转换字符来格式化数值 46,以十进制、定点记数、指数和十六进制格式显示该数值。
1
2
A = 46*ones(1,4);
txt = sprintf('%d %f %e %X', A)
1
2
txt =
'46 46.000000 4.600000e+01 2E'
字段宽度
字段宽度是一个非负整数,位于句点之前。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a=1234.5678;
fprintf('%.2f \n', a)
fprintf('%1.2f \n', a)
fprintf('%2.2f \n', a)
fprintf('%3.2f \n', a)
fprintf('%4.2f \n', a)
fprintf('%5.2f \n', a)
fprintf('%6.2f \n', a)
fprintf('%7.2f \n', a)
fprintf('%8.2f \n', a)
fprintf('%9.2f \n', a)
fprintf('%10.2f \n', a)
fprintf('%11.2f \n', a)
fprintf('%12.2f \n', a)
fprintf('%13.2f \n', a)
fprintf('%14.2f \n', a)
fprintf('%15.2f \n', a)
fprintf('%16.2f \n', a)
fprintf('%17.2f \n', a)
fprintf('%18.2f \n', a)
fprintf('%19.2f \n', a)
fprintf('%20.2f \n', a)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
1234.57
精度
精度是一个非负整数,紧跟在句点之后。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a=1234.5678;
fprintf('%4f \n', a) % Precision defaults to six.
fprintf('%4.0f \n', a)
fprintf('%4.1f \n', a)
fprintf('%4.2f \n', a)
fprintf('%4.3f \n', a)
fprintf('%4.4f \n', a)
fprintf('%4.5f \n', a)
fprintf('%4.6f \n', a)
fprintf('%4.7f \n', a)
fprintf('%4.8f \n', a)
fprintf('%4.9f \n', a)
fprintf('%4.10f \n', a)
1
2
3
4
5
6
7
8
9
10
11
12
1234.567800
1235
1234.6
1234.57
1234.568
1234.5678
1234.56780
1234.567800
1234.5678000
1234.56780000
1234.567800000
1234.5678000000
来源1
绘图
直方图
histogram()
1
2
x = [1,1,2.3,4];
histogram(x)