Ml2:Octave Notes

Octave

记录一些 Octave 特有的语法

逻辑运算

  • 不等于: ~=

注释

  • %

语句后面加分号可以避免回显。

disp(var) 输出var的值

矩阵写法: A = [1, 2; 3 , 4 ; 5, 6]

类似python 中 range 的写法:

v = 1:0.1:2

v = 1 : 6

产生矩阵的方法

  • ones(2, 3)
  • zeros(2, 3)
  • rand(2, 3)
  • eye(4) 单位矩阵
  • magic(5) 幻方矩阵

计算矩阵长度: size(A) 返回的也是一个矩阵

帮助指令: help xxx

xxx 会变成变量名,代表这个文件,可以用 who/whos 命令查看所有变量。

释放内存: clear 变量名

切片:v = priceY(1:10) 把变量 priceY 的前十个元素赋值给 v

文件加载与存储

  • save hello.mat v; 把 v 保存到 hello.dat 文件(二进制形式)
  • save hello.mat v -ascii; 把 v 保存到 hello.dat 文件(ASCII形式)
  • 加载文件: load xxx.dat 或者 load(‘xxx.data’)

切片/拼接

A = [1, 2; 3 , 4 ; 5, 6]

A(3, 2) A 中第3行,第2列的元素

A(3, :) 第3行所有元素,: 代表所有元素

A(:, 2) 第2列所有元素,: 代表所有元素

A(:, 2) = [10; 11; 12] 给第2列赋值

A = [A,[100; 200; 300]]; 添加一列

A(:) 将A的所有元素创建成列向量

C = [A B] 将 A B 左右拼接起来

C = [A ; B] 把 AB 上下拼接

运算

  • A * B

  • A .* B 点乘,AB中相同位置元素相乘

  • A.^ 2 每个元素做作square运算

  • 1 ./ V 求对应元素的倒数 (V ^ -1)

  • log(v) 对每个元素

  • exp(v)

  • abs(v)

  • A’ A的转置

  • max(A) 求每一列的最大值, max(max(A)) 取A中最大值

  • A < 3 返回的是一个矩阵…..对应01表示对应元素与关系符运算结果

  • [r, c] = find(A < 3) 返回 A 中满足条件的元素下标

  • sum(A)

  • sum(A, 1) 求每一列的总和

  • sum(A, 2) 求每一行的总和

  • pinv(A) 求A的逆矩阵

  • prod(A) 返回 A 中所有元素的乘积

  • floor / ceil 取整的

  • max(A, [], 1) 返回每一列的最大值矩阵

  • max(A, [], 2) 返回每一行的最大值矩阵

plot 画图

绘制 sin

1
2
3
t = [0:0.01:0.98];
y1 = sin(2*pi*4*t);
plot(t, y1);

保留画板: hold on;

指定标签:

- xlabel('x-ray')
- ylabel('y-ray')
- legend('sin', 'cos')   指定不同曲线的名称
- title('xxxx')

保存成图片: print -dpng ‘xxxx.png’

figure(n) 绘制图n

subplot(1,2,1) 表格布局(1 x 2),最后一个参数表示接下来操作的布局

axis 修改坐标轴区间

clf 清除图像

控制语句

for 循环

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

While 循环

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

if/while 嵌套

1
2
3
4
5
6
7
while true,
v(i) = 99;
i = i + 1;
if i == 6,
break;
end;
end;

If/else

1
2
3
4
5
6
7
if v(1) == 1,
disp('The Value is 1');
elseif v(1) == 2,
disp('The Value is 2');
else,
disp('The value is not 1 or 2');
end;

函数

定义函数

1
2
3
4
function y = myfunc(x)
y = x ^ 2;
end;

调用函数

1
myfunc(5)

函数可以返回多个值

1
2
3
4
function [y1, y2] = myfunc()
y1 = 1;
y2 = 2;
end;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!