Octave 学习笔记
参考:吴恩达《机器学习》
基本操作
Octave主要用于数值计算,语法与matlab语法十分相似,所以学过matlab对Octave的语法很好理解。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。整数的加减乘除幂运算:+
-
*
/
^
恒等于符号==
,不等于符号 ~=
逻辑与&&
逻辑或||
异或xor
:xor(1,0)
赋值:a=3
整型 ;b='hi'
字符串 ;c=3>=1
bool型
显示数值的等价表示:a=pi
disp(a)
disp(sprintf('2 decimals: %0.2f' , a))
设置Octave浮点数保留长度:format long
format short
向量一般用小写字母表示 v = [1;2;3]
或 v=[1 2 3]'
(转置)
矩阵一般用大写字母表示:`A=[1 2 ; 3 4 ; 5 6]
v=1:0.1:2
:从1到2的行向量,步长为0.1,无步长则默认步长为1
全为1的矩阵 C=2*ones(2,3)
:C=[2 2 2 ; 2 2 2] (数字和矩阵相乘表示数字和每一个元素相乘)
全为0的矩阵 W=zeros(1,3)
随机向量 w=rand(1,3)
(0-1之间的随机数),随机生成标准正太分布:randn(1,3)
(均值为0,方差为1)
将向量绘制直方图hist(w)
,默认分为10份,也可自行设置份数 hist(w,50)
生成单位方阵 eye(4)
查看指令的帮助文档help rand
查看help 指令如何使用help help
移动数据
查看矩阵维数 sz = size(A)
,返回一个1*2的矩阵,表示A的行数和列数,size(A,1)
仅返回A的行数,size(A,2)
返回A的列数,length(v)
返回行和列中较大的维数
显示当前目录:pwd
,修改路径:cd:\Users\ang\Octave files
显示当前目录下的文件:ls
加载文件: load q1y.dat
(需要先切换到文件所在的目录)
查看当前工作空间有哪些变量:who
,显示变量的详细信息:whos
清除变量:clear q1y
v = q1x(1:10)
:v为qx每列中的第一个元素
保存数据save hello.mat v
:将v中元素存入hello.mat文件,支持 fopen, fread, fprintf, fscanf
按下标索引:A(3,2)
,获取第二行:A(2,:)
获取第二列:A(2,:)
获取第一列和第三列A([1 3],:)
修改A的第二列:A(:,2)=[10;11;12]
在A的最后插入一列:A=[A,[100;101;102]]
将A中的所有元素取出来排成向量:A(:)
A=[1 2 ; 3 4 ; 5 6] B=[11 12 ; 13 14 ; 15 16]
B加在A右边:C=[A B]
或C=[A,B]
B加在A下面:C=[A;B]
数据计算
A = [1 2;3 4;5 6] B = [11 12;13 14;15 16] C = [1 1;2 2] v = [1;2;3]
矩阵相乘:A*C
对应位置相乘(点乘):A.*B
A中的每个元素都乘方:A.^2
A中每个元素都用1除:1./A
A中每个元素都取对数:log(A)
A中每个元素都取e的指数:exp(A)
A中每个元素都取绝对值abs(A)
A中每个元素都乘以-1:-A
或-1*A
A中每个元素都加1A+1
A的转置:A'
a=[1 15 2 0.5]
val=max(a)
:返回向量a中的最大值,[val,ind]=max(a)
:返回A的最大值和下标
val=max(A)
:返回每一列的最大值
a<3
:将a中的每个元素与3比较,大于3为0,小于3为1,返回与a同维度的矩阵
find(a<3)
:找出a中所有小于3的元素组成一个向量
A = magic(3)
:构造魔方矩阵(在每行每列、对角线上的和都相等的矩阵)
[r,c] = find(A>=7)
:返回满足条件的行和列
sum(a)
:求向量a的元素和,sum(A)
:求A每一列的和,返回行向量 (与sum(A,1)
相同) sum(A,2)
:求每一行的和,返回一个列向量 ; sum(sum(A))
:求矩阵最大值
max(rand(3),rand(3))
:求两个矩阵每个位置较大的值 ;
max(A,[],1)
:每列最大值(默认) max(A,[],2)
:每行最大值
inv(A)
:求矩阵的逆(方阵且可逆),pinv(A)
:求伪逆 即inv(A'*A)*A'
绘制数据
t = [0:0.01:0.98];
:指定t的范围 y1 = sin(2*pi*4*t);
plot(t,y1)
:绘制t-y1曲线
y2 = cos(2*pi*4*t);
hold on
:原图保存 hold off
:关闭原图 plot(t,y2,'r');
:红色线画出y2
xlabel('time'); ylabel('value');
:x、y轴加上标签 legend('sin','cos')
:给曲线加标注 title('my plot')
:图像加标题 print -dpng 'myPlot.png'
:保存图片 close
:关闭图片
figure(1); plot(t, y1); figure(2); plot(t, y2);
:两张图画在不同窗口
在同一窗口不同网格画图:subplot(1,2,1); plot(t,y1); subplot(1,2,2); plot(t,y2);
设定图像x、y范围:axis([0.5 1 -1 1]);
imagesc(magic(15))
:将矩阵中的元素数值按大小转化为不同颜色
控制语句f
for 、while、if 语句都以end结束
v = zeros(10,1);
for i=1:10,
v(i) = 2^i;
end;
i = 1;
while true,
v(i) = 999;
i = i+1;
if i == 6,
break;
end;
end
函数
函数结构 function y = squareThisNumber(x)
***.m文件 可以返回多个参数
调用方法:先将目录切换到函数所在位置 再使用命令 functionName(args)
参考:吴恩达视频
