- 脚本文件,以下面一行开始:
#!/usr/bin/octave -qf
- 注释,以%或者#开始
- 虚数单位:i, j, I, J都可以 两种方法定义复数:3 + 4i或者complex(3, 4)
- 定义矩阵:
octave:1> a = [1, 2; 3, 4] a = 1 2 3 4
- 随机数:rand()或者rand(m, n)
- 定义一段连续序列:
octave:1> 1:5 ans = 1 2 3 4 5
还可以指定步长:octave:2> 1:2:10 ans = 1 3 5 7 9
- 字符串:单引号或者双引号
- 定义Data Structure:
octave:1> x.name = ”Yusuf” octave:2> x.age = 33 octave:3> x.phone = “46103” octave:4> x x = { name = Yusuf age = 33 phone = 46103 }
- 定义Cell Array:
octave1:> a = {”random matrix”, rand(2)} a = { [1,1] = random matrix [1,2] = 0.417140 0.460380 0.337105 0.078835 } octave2:> a{2}(1,2) ans = 0.460380
- 声明全局变量:
global c = 3e8
- 算术符号
x + y 加法 x - y 减法 x * y 矩阵乘法 x .* y 元素相乘 x / y 右除,相当于(inverse (y’) * x’)’ x ./ y 元素右除 x \ y 左除,相当于inverse (x) * y x .\ y 元素左除,每个y元素被相应的x元素除 x ^ y 或 x ** y 乘方 x .^ y 或 x .** y 元素乘方 x’ 转置复共轭 x.’ 转置 - 比较符号
x < y 小于 x <= y 小于等于 x == y 等于 x >= y 大于等于 x > y 大于 x != y 或 x ~= y 不等于 - if语句
- 形式一:
if (condition) then-body endif
- 形式二:
if (condition) then-body else else-body endif
- 形式三:
if (condition) then-body elseif (condition) elseif-body else else-body endif
- switch语句
switch expression case label command_list case label command_list … otherwise command_list endswitch
- while语句
while (condition) body endwhile
- do-until语句
do body until (condition)
- for语句
for var = expression body endfor
- 定义函数
- 形式一:无自变量 function name body endfunction
- 形式二:带自变量 function name (arg-list) body endfunction
- 形式三:单个返回值 function ret-var = name (arg-list) body endfunction
- 形式四:多个返回值 function [ret-list] = name (arg-list) body endfunction
- 可变自变量长度函数 function val = smallest (varargin) val = min ([varargin{:}]); endfunction
- 函数Handles(指向函数的指针) @function-name
- 匿名函数 @(argument-list) expression
- 终端输出 disp (x)
- 写读包含分隔符的数据文件 dlmwrite (file, a) dlmwrite (file, a, delim, r, c) dlmwrite (file, a, key, val ...) dlmwrite (file, a, "-append", ...) a是待写矩阵,delim是分隔符,默认为逗号。r, c分别为起始的空行和空列。key包含下列参数:
- "append" 即上面的"-append","on"或者"off"
- "delimiter" 即上面的delim
- "newline" 换行符
- "roffset" 即上面的r
- "coffset" 即上面的c
- "precision" 精确度,可以用类似fprintf的格式字符串,或者有效数字位数
- Octave可以使用大多数类似C的I/O函数(fprintf,fopen等)
- 常用数学函数
- 特殊函数
- 线性代数
det (a) 行列式 eig (a) 本征值 dot (x, y) 点乘 inv (a) 逆矩阵 - 解非线性方程 [x, fval, info] = fsolve (fcn, x0, options) fcn是包含待解方程组的函数,x0是自变量初始值,x为返回的数值解,fval为返回的函数值,如果结果收敛,info为1,否则为其他值。例子: function y = f (x) y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6; y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4; endfunction [x, fval, info] = fsolve (@f, [1; 2]) 结果: x = 0.57983 2.54621 fval = 6.1872e-08 -3.2708e-07 info = 1
- 数值积分(各函数对应不同算法) [v, ier, nfun, err] = quad (f, a, b, tol, sing) quadl (f, a, b, tol) quadgk (f, a, b, prop, val, ...) quadl (f, a, b, tol)
2011年1月12日星期三
Octave笔记
Octave可以看作是开放源代码版本的Matlab,它的命令几乎和Matlab完全一样,因此可以用Matlab的书籍和文档来学习Octave。另外,绝大多数Matlab的代码也可以不经修改在Octave中运行。对于初学者来说,下面这些笔记可以帮助快速上手Octave。更多的功能,可以参考Octave文档或者其他Matlab的资料。
订阅:
博文 (Atom)