octave初次使用记录
2018-03-14 本文已影响77人
克罗地亚催眠曲
#清除所有变量
clear
#清除某个变量
clear varname
#以更精确的方式显示数值变量
format long
#以15位有效数字的方式显示,这也是octave程序本身的计算精度
#精确度问题
1-0.2-0.2-0.2-0.2-0.2
ans = 5.5511e-017
#因此考虑两个数是否相等时,不要忘记精度和容许误差
#取消一个正在执行的命令
Ctrl + C
#在命令后添加分号,将不会显示相应的结果
#在方括号中由空格或逗号隔开的一行数据被定义为行向量,由分号隔开的一行数据被定义为列向量
#冒号表达式可以用来创建一些特殊的向量
- e = 2 : 6
e=
2 3 4 5 6
- e = 2 : 0.3 : 4
e=
2.0000 2.3000 2.6000 2.9000 3.2000 3.5000 3.8000
#中间的数字为增量,如果向量中的增量不是恰好达到尾数,octave 将产生不超过尾数的一组向量。增量可以是负数并相应产生有一个递减的向量
#打开或关闭分屏显示功能
more off/on
#octave提供了多个向量构造函数
zeros(M,N) # 创建一个 M×N 的零矩阵
ones(M,N) # 创建一个 M×N 的全译矩阵
linspace(x1,x2,N) # 创建一个 N 个元素的向量, 均匀分布于 x1
和 x2
logspace(x1,x2,N) # 创建一个 N 个元素的向量,指数分布与
10^x1 和 10^x2 之间
# 通过括号操作符操作向量中的元素,第一个元素的编号是1
a = [1:2:6 -1 0]
a=
1 3 5 -1 0
a(3)
ans=
5
a(3:5)
ans=
5 -1 0
# 每个算符前面的‘.’表示元素对元素的计算
a=[1,2,3]
b=[1,2,3]
a.*b
ans=
1 4 9
a*b
error: operator *: nonconformant arguments (op1 is 1x3, op2 is 1x3)
# 对乘方计算同样适用
b.^2
ans=
1 4 9
# 画出正弦曲线sin(x)的图像
angles=linspace(0,2*pi,100);
y=sin(angles);
plot(angles,y);
# 其中 linspace 命令创建了 0 到 2π 之间的 100 个数值
replot # 更新图片
grid on # 为图片添加网格线
plot 命令中的颜色和样式选项 († 仅在 Matlab 中存在的选项)
字符 | 含义 | 字符 | 含义 | 字符 | 含义 |
---|---|---|---|---|---|
w | 白色 | . | 点 | - | 实线 |
m | 品红 | o | 圆圈 | : | 虚线 † |
c | 青色 | x | x 形 | -. | 点划线 † |
r | 红色 + | + 号 | – | 虚线 † | |
g | 绿色 | * | 星号 | ||
b | 蓝色 | s | 正方形 † | ||
y | 黄色 † | d | 菱形 † | ||
k | 黑色 † | v | 下三角 † | ||
< | 左三角 † | ||||
> | 右三角 † | ||||
p | 五角星 † | ||||
h | 六边形 † |
# 在同一个plot窗口中画出多个图像使用
hold on
# 命令,默认plot会清除原图片上的内容
hold off
# 关闭该功能
# 多幅图片可以通过figure命令来控制,在命令行中输入
figure
# 下一个plot命令将会在新窗口中绘制
# 如果想返回到之前的图片,输入命令
figure(1)
# octave提供了print命令将图片打印的默认的打印机上
print('graph1.png','-dpng')
# 将当前图像保存为一个png文件
# 添加某个目录到path中
addpath('/home/bob/bin/octave')
# 保存对path的修改
savepath
# 查看所有脚本
what
# 控制语句的用法
if expression
statements
elseif expression
statements
else
statements
end
switch x
case x1
statements
case x2
statements
otherwise
statements
end
for variable=vector
statements
end
# 例如
for n=1:5
nf(n)=factorial(n);
end
while expression
statements
end
# 在 Octave 函数中参数是通过值传递的而不是通过 reference 传递并能返回多个返回值
# 函数的格式如下
function [output1,output2,...]=functionname(input1,input2,...)
# 函数示例1:角度制正弦函数
function s=sind(x)
% SIND(x) Calculates sine(x) in degrees
s=sin(x*pi/180);
endfunction
# 通常octave不需要return语句,不过有时可在函数体中间跳出。
# 函数示例2:单位跃阶函数
function y = ustep(t, t0)
[m, n] = size(t)
if m ~= 1 & n ~= 1
error("T must be a vector")
end
y = zeros(m, n)
for k = 1 : length(t)
if t(k) >= t0
y(k) = 1
endif
endfor
endfunction
t = -1:0.1:4;
v = ustep(t, 0) - ustep(t, 1)
plot(t, v)
axis([-1 4 -1 2]) % 调整坐标位置
# 矩阵创建函数
# 创建对角矩阵
diag([1,2,3,4])
# 若A为一矩阵则diag(A)返回该矩阵的对角元
# 创建单位矩阵
eye(4)
# 创建复合矩阵
B = [2 0; 0 -1; 1 0]
comp = [eye(3) B; A zeros(2, 2)]
comp=
1 0 0 2 0
0 1 0 0 -1
0 0 1 1 0
5 7 9 0 0
-1 3 -2 0 0
# 在此过程中需要注意各个子矩阵的行列数的匹配
# 提取矩阵元
J = [1 2 3 4; 5 6 7 8; 11 12 13 10]
J(1, 1) % 1
J(2,3) % 7
J(1:2, 4) % 行1-2, 第四列 [4;8]
J(3,:) % 第三行,所有类 [11 12 13 10]
J(3,2:3)=[-1 0]
# 基本矩阵函数
eye 创建单位矩阵
zeros 创建全零矩阵
ones 创建全一矩阵
rand 创建随机数矩阵
diag 创建一个对角矩阵,或者提取一个矩阵的对角元
inv 求矩阵逆矩阵
det 求矩阵特征值
trace 求矩阵的迹
eig 求矩阵的特征向量和特征值
rank 求矩阵的秩
null Calculate a basis for the null space of a matrix
rref Perform Gaussian elimination on an augmented matrix
lu Calculate the LU decomposition of a matrix
qr Calculaate the QR decompotitionof a matrix
svd Calculate the SVD of a matrix
pinv Calculate the pseudoinverse of a matrix