简单用了一下 Octave,发现用他来进行数据运算、矢量绘制等操作的时候还是非常方便的,在此做一点简单笔记.
注释
% 或者 # 为单行注释
代码语言:javascript复制# this is line comment
% this is line comment
%{ 与 %} 或者 #{ 与 #} 为块(多行)注释
代码语言:javascript复制%{
block comment
%}
#{
block comment
#}
向量
在 Octave 中我们可以直接创建向量,使用 空格 或者 逗号 来分隔列;使用 分号来分隔行.
代码语言:javascript复制>> v = [1, 2, 3] % same as v = [1 2 3]
v =
1 2 3
上面的 v 便是(1行3列)行向量,而下面的 v 则是(3行1列)列向量
代码语言:javascript复制>> v = [1; 2; 3]
v =
1
2
3
通过综合使用逗号(或空格)和分号,我们就可以创建矩阵了:
代码语言:javascript复制>> v = [1, 2; 3, 4]
v =
1 2
3 4
另外,冒号还能用于表示范围区间,可以方便我们创建向量和矩阵:
- a : b 表示 从 a 到 b
- a : b : c => 表示 从 a 到 c, 中间的间隔为 b
>> v = [1 : 3; 4 : 6]
v =
1 2 3
4 5 6
>> v = [1 : 2 : 5; 2 : 2 : 6]
v =
1 3 5
2 4 6
访问
- 访问元素
我们可以按索引号来直接访问元素:
代码语言:javascript复制v = [1, 2, 3]
% v 是行向量, v(2) 访问直接其第二列元素
>> v(2)
ans = 2
代码语言:javascript复制v = [1; 2; 3]
% v 是列向量, v(2) 访问直接其第二行元素
>> v(2)
ans = 2
代码语言:javascript复制v = [1 : 3; 4 : 6; 7 : 9]
% v 是矩阵, A(2, 2) 访问其第二行第二列元素
>> v(2, 2)
ans = 5
- 访问单行(或单列)
借助之前提到的冒号,我们可以直接访问单行(或单列)
代码语言:javascript复制v = [1 : 3; 4 : 6; 7 : 9]
% v 是矩阵, A(2, :) 访问其第二行所有元素
>> v(2, :)
ans =
4 5 6
% 如果直接使用 A(2) 访问的话,返回的是第二行的第一个元素
>> v(2)
ans = 4
- 访问多行(或多列)
通过向量索引的方式,我们可以访问多行(或多列)
代码语言:javascript复制v = [1 : 3; 4 : 6; 7 : 9]
% v(:, [1, 3]) 访问 v 中 第一列 和 第三列的所有元素
>> v(:, [1, 3])
ans =
1 3
4 6
7 9
% v([1, 3], :) 访问 v 中 第一行 和 第三行的所有元素
>> v([1, 3], :)
ans =
1 2 3
7 8 9
% v([1, 3], [1, 2]) 访问 v 第一行 和 第三行 中的 第一列 和 第二列 元素
>> v([1, 3], [1, 2])
ans =
1 2
7 8