Octave 使用入门

  本内容将介绍 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. 矩阵输入

  矩阵的输入方法:

输入方法 说明
[ a 11 , a 12 , . . . , a 1 n ; a 21 , a 22 , . . . , a 2 n ; . . . ; a m 1 , a m 2 , . . . , a m n ] [a_{11}, a_{12},..., a_{1n}; a_{21}, a_{22},..., a_{2n}; ...; a_{m1}, a_{m2},..., a_{mn}] m 行 n 列的矩阵
a: b: c 一个行向量,内容是 [ a , a + b , a + 2 b , . . . , c ] [a, a+b, a+2*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

>>

猜你喜欢

转载自blog.csdn.net/benzhujie1245com/article/details/82762455