Octave笔记¶
概述¶
与Matlab语法兼容的开源科学计算与数值分析工具。
具有CLI和GUI版本。
输入与输出¶
- 选择数值显示的方式:formathelp format
- 保存和读取工作环境/变量:save <filename> [var1] [var2] [...]load <filename>
- 在语句末尾使用分号 ;来隐藏计算结果回显。
- 保持语义的换行是...,不要在省略号后附加任何符号。可用于在多行内输入一个行变量(一维数组)。
- 分屏显示 more <off / on>
- space下一页
- b上一页
- q退出
基本概念¶
- 注释使用#或%。
- 数组的下标从1开始。
- 三角函数使用弧度制。
- 自然对数是log而不是ln。
变量¶
- 变量区分大小写。
- who命令查看当前命名的函数和变量。
- clear [var-name]清除全部变量或特定变量。
- disp()显示字符串或变量的值。
数组和向量¶
- 构造向量
- a = [1 3 5]
- b = [2, 4, 6]
- c = [3; 6; 9]
- 逗号或空格隔开是行向量;由分号或回车隔开将被定义为列向量。
- d = [a 6]在a的基础上添加新元素6。
- [a : step : b]创建[a, b]之间的变量,步长为step;注意与python的- range(a, b, step)区分。
- 向量的构造函数
- zeros(M, N)创建M行N列的零向量。
- ones(M, N)创建M行N列的全1向量。
- linspace(x1, x2, N)创建N个元素的向量,均匀分布于x1和x2。
- logspace(x1, x2, N)创建N个元素的向量,指数均匀分布于x1和x2。
- 向量元素操作
- 下标从1开始。
- a(3)取得第3个元素;注意并非使用中括号。
- a(1:2:10)取多个元素。
- 向量运算
- *- /- +- -向量运算
- 在算符前添加 .对单个元素的运算,如a .* 2
- 逆转行列 filplr(),flipud()
绘图¶
绘图前需要设置Graphics Toolkit:
graphics_toolkit("gnuplot") 备选:"qt"及"gnuplot"
绘图指令¶
- figure()启动一个绘图环境
-  hold on,hold off保持/不保持上个指令的绘制状态
-  图注 title('标题')
- 坐标标签 xlabel()ylabel()
- 坐标轴 axis(xbegin, xend, ybegin, yend)
- 坐标格 grid on
plot(x, y)¶
 - plot(x, y)
- 自定义标记 plot(x, y, '+')
- 修改标记大小 plot(x, y, '+', 'MarkerSize', 12)
- 修改线宽 plot(x, y, 'LineWidth', 5)
输出为图片¶
print('figure.png', '-dpng');
逻辑¶
if expression statements elseif expression statements else statements end switch x case x1 statements otherwise statements end for varible = vector statements end while expression statements end
数据处理¶
求值¶
- 平均值 mean()
- 近似整数 round()
- 算术平方根 sqrt()
拟合¶
线性拟合工具 P = polyfit(x, y, n) n为拟合曲线的次数 线性拟合求值函数 polyval(P, t) 返回拟合曲线在t处的值
非线性拟合工具 lsqcurvefit
% 变温粘滞系数 Figure nw-t 图像 % nw = [.548, .469, .343, .222, .182]; t = [ 30, 35, 40, 45, 50]; function rslt = fun(var, data) rslt = var(1) * exp(-var(2) * data); endfunction var0 = [0 0]; P = lsqcurvefit(@fun, var0, t, nw); plot(t, nw, '+', 'MarkerSize', 12); plot([25:1:55], fun(P, [25:1:55]), 'LineWidth', 5);