Octave命令

2017-09-03  本文已影响147人  glassyw

基本操作:

操作 注释
~= 不等于
xor 异或
ps1('>> '); 隐藏版本信息
a=3; 加上;后不打印
% 注释
disp() 更复杂的输出
disp(sprintf('2 decimals:%2f',a) 输出字符串
format long 输出长字符串(小数点后十六位)
format short 输出短字符 (小数点后四位)
A=[1 2; 3 4; 5 6] 输入一个矩阵A(2x3),一行一行输入
V=[1 2 3] 输入一个向量V(也可以说是一个1x3的矩阵)
V=[1;2;3] 输入一个列向量
V=1:0.1:2 从1开始,每次增长0.1一直到2,生成向量V=[1.00000000000000 1.10000000000000 1.20000000000000 ... 2.00000000000000]
V=1:6 生成1到6的数形成向量,即V=[1 2 3 4 5 6]
ones(2,3) 生成全是1的2x3的矩阵
c=2*ones(2,3) 生成全是2的2x3矩阵
w=zeros(1,3) 生成全是0的1x3的矩阵/向量
w=rand(1,3) 生成全是随机数的1x3的向量/矩阵(数值0到1之间)
w=randn(1,3) 生成平均值为0的高斯分布
hist(w) 打印直方图(比如画出一个1x1000的随机变量w)
hist(w,50) 打印直方图(50个条)
eye(4) 生成一个单位矩阵I(4x4)4阶

移动数据

操作 注释
size(A) 返回矩阵A的大小(3x2之类的返回[3 2])
size(A,1) 返回矩阵A的行数
length(A) 返回最大维数(ps:一般对向量用)
pwd 返回当前运行所在path
ls 可以当前path的所有目录
load input.txt 加载数据文件
load('input.txt') 同上
who 显示当前Octave储存的变量
input (这只是我的input文件名,此时成了一个变量名)显示input文件内容
size(input) 查看input这个文件的大小
whos 显示当前Octave存储变量的具体信息(数据类型、size、Bytes之类的)
clear input 可以删除input这个变量
v=input(1:3) 返回v=[1 3 5],也就是input文件的前3个数存储在向量v中
save outputtest.txt 将数据写入硬盘,并且名字叫outputtest
clear 清除所有变量
A(3,2) A矩阵里第3行第2列的数
A(2,:) A矩阵里第2行的所有数
A([1 3],:) A矩阵里第1行和第3行所有数
A(:,2)=[10;11;12] A矩阵的第二列分别赋值
A=[A,[1;2;3]] 给A矩阵增加一列数据
A(:) 把A矩阵的所有数据放在一列
C=[A B] 连接矩阵A和B形成新的矩阵C(A、B左右排列)
C=[A;B] 连接矩阵A和B形成新的矩阵C(A、B上下排列)

ps:[A B] 与[A,B]的写法是一样的

对数据进行运算

操作 注释
A*B 矩阵乘法
A .*B A矩阵里的数乘以B矩阵里对应的数(a11 * b11)

ps: .符号在Octave一般表示元素位运算

操作 注释
A .^2 A矩阵里每个元素都做平方运算
1 ./ V 对V向量里的每一个元素求倒数
1 ./ A 对矩阵,同上
log(A) 对矩阵里的每个元素做对数运算
exp(V) 对向量里的每个数做幂次运算(e为底,V里面的元素为幂)
abs(V) 对向量里的每个数都求绝对值
-V 取相反数
V+ones(length(V),1) 对向量的每一个元素都+1
V+1 同上
A' A矩阵的转置
max(A) 对矩阵的每列求最大值,向量就是最大值
[val,ind]=max(a) 找出每列里面最大的并且返回索引
A<3 对每个元素进行比较,返回0/1的矩阵
find(A<3) 返回哪些符合条件的元素的索引
magic(3) 生成3阶幻方(或者说魔方阵,magic square,它的所有行、列、对角线加起来都是同一个值)

ps:这在机器学习上基本没用,但是可以很快生成一个n阶方阵哇:D

操作 注释
[r,c]=find(A>=7) 找出A矩阵里比7大的数的索引(r是行数,c是列数)
help find 以后只要不记得语法就可以用help+操作命令就可以查看文档
sum(A) 把A里面的所有元素都相加(向量),矩阵的话就是每列的相加结果
prod(A) 把A矩阵每列的数都相乘得到一个数
floor(A) 对A的每个元素都向下四舍五入(ps:0.9 -> 0;0.5->0)
ceil(A) 对A的每个元素都向上四舍五入(ps:0.1->1;0.5->1)
max(rand(3),rand(3)) 随机生成3阶随机数矩阵,每个元素都比较,每个元素都在两个矩阵中取对应的较大的那个形成新的矩阵
max(A,[],1) A矩阵里每一列的最大值(1表示取A矩阵第一个维度的最大值)
max(A,[],2) A矩阵里每一行的最大值
max(A) 默认情况下,返回的是每一列的最大值
max(max(A)) 找出矩阵里所有元素里的最大值
A(:) 将矩阵变为列向量,一列一列排起来
max(A(:)) 把A当成向量,找出最大值
sum(A,1) 把每一列的数相加
sum(A,2) 把每一行的数相加
A .* eye(3) 得到A的对角线,其余都是0的矩阵
sum(sum(A .* eye(3))) 得到A矩阵对角线的总和
sum(sum(A.* flipud(eye(3)))) 得到副对角线的总和
filpud() 向下翻转
filpup() 向上翻转
pinv(A) 求A的伪逆矩阵(就算不可逆也能计算)

绘制图像

t=[0:0.01:0.98]
y1=sin(2pi4*t);
plot(t,y1) #绘制x轴为t的函数图
hold on #将新图画在旧图上
plot(t,y2,'r') #画一条新的线在原图上,并且用红色绘制
xlabel('time') #给x轴命名
ylabel('value') #给y轴命名
legend('sin','cos') #为绘制的线标记名字
title('my plot') #为图加上标题
print -dpng 'myplot.png' #打印绘制的图病保存为图片
close #关闭文件
figure(1); plot(t,y1) #给绘制的图片添加编号
subplot(1,2,1); #将图像变成1x2的格子,前面两个参数可以调整坐标轴的大小,伸缩
subplot(1,2,2); #在同一个平面上绘制第二张图,第三个参数为绘制的图的索引
axis([0.5 1 -1 1]) #前两个参数设置了X轴的刻度范围,后两个参数设置了Y轴的刻度范围
clf; #清除图像
imagesc(A) #绘制矩阵A
imagesc(A),colorbar,colormap gray #将绘制的图变成灰度分布图(colorbar在右边增加了一个颜色条)

循环控制语句

for i=1:10,
v(i)=2*i;
end; 遍历1到10,每次乘以2

indices=1:10;
for i= indices,
disp(i);
end; 效果同上

i=1;
octave:2> while i<=5,
v(i)=100;
i=i+1;
end; while写法

i=1;
octave:7> while true,
v(i)=999;
i=i+1;
if i==6,
break;
end;
end; 添加了if的while

if v(1)==1,
disp('1');
elseif v(1)==2,
disp('2')
else
disp('else')
end; else-if写法

上一篇下一篇

猜你喜欢

热点阅读