Octave笔记¶
概述¶
与Matlab语法兼容的开源科学计算与数值分析工具。
具有CLI和GUI版本。
输入与输出¶
- 选择数值显示的方式:
format
help 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);