基本操作:
功能 | 实现 |
---|---|
四则运算 | +,-,*,/ |
逻辑运算 | ==,~=,&&,||,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;
尽量使用向量化的实现,有助于减少代码的书写并提高性能和正确率。