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

上一篇下一篇

猜你喜欢

热点阅读