Octave 教程

96
天际神游
2017.09.18 18:01* 字数 78

基本操作:

功能 实现
四则运算 +,-,*,/
逻辑运算 ==,~=,&&,||,xor()
注释 %
打印 disp() ,disp('6 decimals: 0.6f', a)
向量 [1 2; 3 4;],[1, 2; 3, 4;](最后的分号可有可无)
初始化行向量从1到2,步长0.1 1 : 0.1 : 2, 1 : 6(步长默认1)
元素全为1的矩阵 ones(2,3)(两行三列全为1的矩阵),2*ones(2,2)
元素全为0的矩阵 zeros(2,3)
生成元素随机矩阵 rand(2,3)(数值介于0和1之间)
生成平均值为0的高斯分布 randn(1,3)
生成单位矩阵 eye(4)
帮助 help eye,help help
查看矩阵大小 size(W,2) (默认行向量,1(行)2(列))
查看最大的行或者列的大小 length()
返回一个元素 W(3,2)
返回行 W(3, :)
返回列 W(:, 2)
返回第n和m行 W([n, m], :)
给矩阵添加新的列 W = [W, [100; 101; 102]]
把元素全部变成一个列向量 W(:)
组合两个矩阵 [A B],[A ; B]
对应元素位操作 .* , .^ , ./
对每个元素求对数 log(W)
每个元素作为e的指数 exp(W)
对每个元素求绝对值 abs(W)
求转置 W'
返回最大一行,向量返回最大值 max(W)
矩阵判断大小,返回一个矩阵 a=[1,2,3]; b=a<2; b:[1,0,0]
查找函数 按条件查找find(a<3),返回index
n阶幻方生成 magic(n)
对各元素求和 sum(W)
对各元素求积 prod(W)
向下取整 floor(W)
向上取整 ceil(W)
比较两个元素,返回最大值 max(rand(3),rand(3))
返回列最大 max(W, [], 1)
返回行最大 max(W, [], 2)
返回矩阵最大的元素值 (max(max(W)))
翻转矩阵 flipud(W)
伪逆矩阵 pinv(W)

移动数据:

功能 实现
加载文件 load filename,load('filename')
展示当前Octave存储的变量 who,whos(详情)
清除变量 clear W,clear(清除所有变量)
存储文件 save hello.mat W(二进制),save hello.txt W -ascii

将数据画图:

功能 实现
画图 plot(x, y1)
画直方图 hist(W),hist(W,50)
在原来的图上画图 hold on;plot(x, y2, 'r')('r'表示红色)
标记x,y轴 xlabel('time');ylabel('value')
标记两条线 legend('sin','cos')
标题 title('myplot')
打印图片 cd 'c:' print -dpng 'myplot.png'
关闭图像 close
给图像编号 figure(1); plot(t,y1); figure(2); plot(t,y2)
给图像分格子 subplot(1,2,1)(分两个格子,当前使用第一个)
改变刻度 axis([0.5 1 -1 1])
清除图像 clf
矩阵可视化 imagesc(W)
矩阵可视化之修改成灰度图 imagesc(W), colorbar, colormap gray;
连续执行命令 ',' 可以使得命令顺序执行,如上

其他功能

功能 实现
添加文件夹路径 addpath()

Octave的控制语句:

for循环:

for i=1:10,
    v(i) = 2^i;
end;

while循环:

i=1;
while i <= 5,
    v(i) = 100;
    i = i+1;
end;

if和break语句:

i=1;
while true,
    v(i) = 999;
    i = i+1;
    if i == 6,
        break;
    end;
end;

if elseif的使用:

v(1) = 3;
if v(1) == 1,
    disp('The value is one');
elseif v(1) == 2,
    disp('The value is two');
else
    disp('The value is not one or two');
end;

尽量使用向量化的实现,有助于减少代码的书写并提高性能和正确率。

Web note ad 1