本内容将介绍 Octave 的一些基本操作命令和使用方法。
Octave 是一个旨在提供与 Matlab 语法兼容的开放源代码科学计算及数值分析的工具;它同时也是 GNU 项目成员之一。相比 Matlab,Octave 不仅是开源和免费的,并且占用空间小。
1. 基本操作
一些基本命令:
命令 | 作用 |
---|---|
PS1(’>>’) | 更换命令行提示符,单引号内的内容可以替换成其他符号。 |
% | 注释符号 |
help 函数名 | 显示函数的帮助手册,并且可以 “help help” |
pwd | 显示当前环境路径 |
cd ‘path’ | 改变路径 |
ls | 列出当前路径下所有文件 |
2. 操作符号
加减乘除操作符号和逻辑符号:
操作符号 | 作用 |
---|---|
+ | 加法操作 |
- | 减法操作 |
* | 乘法操作 |
/ | 除法操作 |
== | 等于 |
~= | 不等于 |
&& | 逻辑与 |
|| | 逻辑或 |
xor(数字a,数字b) | 异或 |
>>3 + 4 % 加法
ans = 7
>>5 - 2 % 减法
ans = 3
>>5 * 4 % 乘法
ans = 20
>>12 / 4 % 除法
ans = 3
>>5 == 6 % 等于
ans = 0
>>5 ~= 6 % 不等于
ans = 1
>>0 && 3 % 逻辑与
ans = 0
>>1 && 4 % 逻辑与
ans = 1
>>0 || 3 % 逻辑或
ans = 1
>>xor(1,0) % 异或
ans = 1
>>
3. 变量输入
变量的输入方法:
变量输入方法 | 说明 |
---|---|
变量名 = 数值 | 变量为数字 |
变量名 = ‘字符串内容’ | 变量为字符串 |
变量名 = (bool 表达式) | 变量为逻辑值 |
变量名 = 矩阵 | 矩阵输入方式将在后面部分进行单独说明 |
>>a = 1 % 变量为数字
a = 1
>>b = 'Hello' % 变量为字符串
b = Hello
>>c = (3~=1) % 变量为逻辑值
c = 1
>>d = 5
d = 5
>>d = 5; %如果在语句后面添加上“;”后,不会进行打印输出。
>>
如果在语句的后面添加上“;”,不会进行打印输出。
4. 打印方法
打印变量的方法:
打印方法 | 说明 |
---|---|
变量名 | 直接输入变量名,就会打印该变量 |
disp(变量名) | 打印该变量 |
disp(sprintf函数) | 打印 sprintf 命令生成的字符串,sprintf 函数是一种 C 语言的输出方式 |
format long | 改变打印格式,打印出较多位数小数点 |
format short | 改变打印格式,打印出较少位数小数点 |
>>a = 1
a = 1
>>b = pi
b = 3.1416
>>a % 直接输入变量名,进行打印
a = 1
>>disp(a) % 使用 disp(a) 进行打印
1
>>disp(sprintf('b = %0.6f', b))
b = 3.141593
>>b
b = 3.1416
>>format long % 当输入“format long” 后,再次输入 b 时,输出较多位小数点
>>b
b = 3.14159265358979
>>format short
>>b
b = 3.1416 % 当输入“format long” 后,再次输入 b 时,输出较少位小数点
>>
5. 矩阵输入
矩阵的输入方法:
输入方法 | 说明 |
---|---|
m 行 n 列的矩阵 | |
a: b: c | 一个行向量,内容是 |
a: b | 一个行向量,等同于上面的 “a: 1: b” |
ones(m, n) | m 行 n 列的矩阵,所有元素为 1 |
zeros(m, n) | m 行 n 列的矩阵,所有元素为 0 |
rand(m, n) | m 行 n 列的矩阵,所有元素为 0~1 之间的随机值 |
randn(m, n) | m 行 n 列的矩阵,所有元素为高斯分布的随机变量,服从均值为 0,方差为 1 的高斯分布 |
算式 | 比如 6 + ones(m, n), m 行 n 列的矩阵,所有元素为 7(即 1+6) |
eye(m) | m*m 的单位矩阵 |
>>a = [1, 2, 3; 4, 5, 6]
a =
1 2 3
4 5 6
>>a = [1, 2, 3
> 4, 5, 6]
a =
1 2 3
4 5 6
>>b = 1:2:11
b =
1 3 5 7 9 11
>>b = 1:2:10
b =
1 3 5 7 9
>>c = 1:8
c =
1 2 3 4 5 6 7 8
>>d = ones(2, 3)
d =
1 1 1
1 1 1
>>e = zeros(2, 3)
e =
0 0 0
0 0 0
>>f = rand(2, 3)
f =
0.046698 0.695305 0.661217
0.681041 0.884566 0.934226
>>g = randn(2, 3)
g =
0.33784 0.62990 1.20046
-0.44516 -0.71766 -0.70466
>>h = 6 + ones(2, 3)
h =
7 7 7
7 7 7
>>i = eye(3)
i =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
>>
绘制直方图
hist 命令可以用来绘制直方图
命令 | 说明 |
---|---|
hist(矩阵变量) | 绘制直方图 (默认是 10 个方块) |
hist(矩阵变量, n) | 绘制 n 个方块的直方图 |
>>w = -6 + sqrt(10)*(randn(1, 10000));
>>hist(w) % 绘制直方图(默认是 10 个方块)
>>hist(w, 50) % 绘制 50 个方块的直方图
>>
数据处理
命令 | 说明 |
---|---|
size(矩阵变量) | 返回矩阵的大小,返回结果是一个 1 x 2 的矩阵 |
size(矩阵变量, 1) | 返回矩阵的行数 |
size(矩阵变量, 2) | 返回矩阵的列数 |
length(矩阵变量) | 矩阵的最大维度的大小 |
>>a = [1, 2, 3; 4, 5, 6] % 输入一个矩阵
a =
1 2 3
4 5 6
>>sz = size(a) % 返回一个矩阵 [2 3]
sz =
2 3
>>size(sz) % size(a) 返回的结果 sz 是一个 1 x 2 的矩阵
ans =
1 2
>>size(a, 1) % 返回矩阵 a 的行数 2
ans = 2
>>size(a, 2) % 返回矩阵 a 的列数 3
ans = 3
>>length(a) % 返回矩阵 a 的最大维数的大小 3 (3(列数) > 2(行数),所以返回 3)
ans = 3
>>length(sz)
ans = 2
>>
在文件系统中加载和查找数据
命令 | 说明 |
---|---|
load filename.dat | 加载 “filename.dat” 中的内容,此文件需要在 Octave 当前路径下(可以使用前面介绍的 pwd 查看当前路径和 cd 修改当前路径) |
load(‘filename.dat’) | 加载 “filename.dat” 中的内容,效果与上面的命令相同 |
who | 显示出当前 Octave 中的所有变量,即当前 Octave 在内存中储存的所有变量 |
whos | 显示出当前 Octave 中的所有变量,相比 who 会显示出更详细的信息 |
clear 变量名 | 删除该变量,所有 clear 后面不添加参数,将删除当前 Octave 中的所有变量 |
矩阵(m:n) | 获取矩阵的第 m 个元素到第 n 个元素,索引值从 1 开始 |
save hello.mat 变量名 | 将此变量保存到一个名为 hello.mat 的文件中,将数据存储为二进制格式 |
save hello.txt 变量名 -ascii | 将此变量保存到一个名为 hello.txt 的文件中,使用 ascii 编码 |
>>load filename.dat
>>who
Variables in the current scope:
filename
>>filename
filename =
1 12
2 24
3 36
4 48
>>a = filename(1:5)
a =
1 2 3 4 12
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
a 1x5 40 double
filename 4x2 64 double
Total is 13 elements using 104 bytes
>>save hello.mat filename
>>save hello.txt filename -ascii
>>clear filename
>>who
Variables in the current scope:
a
>>