Octave简明教程

这里就不介绍octave是什么了,如果你真心想学习ML的话,octave是一个可以帮助你进行计算的强大工具

符号

% 注释

~= 不等于

; (注意半角) 结束符号,命令行中可以不print出来

>, < , =值得一提的是这些符号可以应用到矩阵中,可以将矩阵中的每一个元素和符号后的数字进行比较,最终判断成立返回1, 判断错误返回0,比如这样

PS1(">> ") 可以把命令行的开始符号变成>>


命令

sprintf("%0.2f", a) 类似c语言中的输出
disp() 显示字符串


矩阵

v = 1:0.1:2 1是开始,0.1是步长,2是结束,包括1.0,所以有11个数

矩阵初始化
a  = [1 2 3; 4 5 6; 7 8 9] 
矩阵a

注意一下,;代表的是换行,每一行中可以拿,隔开也可以不用,直接空开就可以。

特殊矩阵初始化

以下矩阵创建中第一个参数都是行,第二个都是列

1矩阵
0矩阵
随机矩阵
方差标准差都为1的矩阵
魔法矩阵

这个矩阵特别有意思,以第一行第一个为例,sum(第一行) = sum(第一列) = sum(第一个元素所在对角线)

单位矩阵
矩阵索引
a(1,1)
>> 1 
a(1,2)
>> 2 

这里需要用圆括号扩起来,第一个数字是行,第二个是列,octave中是从1开始数数的而不是0

矩阵变化

继续拿上面的a为例吧

重新赋值
将第一行的值替换成10 11 12

参数意义还是不变的,第一个代表行,第二个代表列,:表示的是所有

添加新行/列
添加到新列
添加到新行

如果你仔细观察的话就会发现新列是用,(空格也行)隔开的,而新行是用;隔开的,很符合我之前提到的;换行规则吧~ 需要注意的是添加新的矩阵兼容性

矩阵向量化

矩阵计算

继续拿上面的a为例吧

矩阵相加
全部加1
矩阵相减
全部减1

矩阵相乘

叉乘

需要注意的是矩阵的兼容性

点乘
矩阵除法

指的是给矩阵中每一个元素都除以一个相同的数字


矩阵幂运算
矩阵指数运算

矩阵对数运算

e为底的
以2为底的

这里用的例子还是原来的3 X 3例子并使上面的e e e


以10为底的

自行把2换成10就可以了


函数

length()

length返回的是长度,有可能是行的个数有,可能是列的个数。这取决于那个时候更大

max()

对于向量来说会返回其中最大的一个数字

对行向量来说会返回最大的一个数字

对矩阵来说会返回一个向量,向量的每一行对应原来矩阵每一行的最大值

返回矩阵中最大的一个数值

返回一个行向量,对应该列最大的数,1代表列

返回一个向量,对应该行最大的数,2代表行

floor()

向下圆整

ceil()

向上圆整

sum()

返回一个行向量,将每一列相加,1代表列

返回一个向量,将每一行相加,2代表行

flipud()

将矩阵上下颠倒


画图

简单图像

画一个二次函数吧!

hold on %比如说我们还想在原来的基础上画一个图像
y2 = -x .^ 2 + 1;
plot(x, y2, 'r');
% 加标签
xlabel("x value");
ylabel("y value");
legend("x^2", "-x^2+1"); % 对应图中的颜色线条注释
title("first plot");
cd Desktop; print -dpng "firstPlot.png" %会保存到桌面上
画多个图
figure(1); plot(x, y1);
figure(2); plot(x, y2);
subplot()
subplot(1, 2, 1);

第一个和第二个参数代表的是把图分为 1 X 2, 第三个参数是使用第一个部分。

subplot(1,2,1); %使用第一部分
plot(x,y1); 
subplot(1,2,2); %使用第二部分
plot(x,y2,'r');
axis([0.5 1; -1 1]);

这个可以改变轴的长度,前两个是x轴,后两个是y轴,从起始长度到结束长度。

clf

清楚之前画过的图像

彩色矩阵图矩阵图
a = magic(10);
imagesc(a);
额外参数
imagesc(a), colorbar, colormap gray;

colorbar指的是右边的棒状色卡,colormap "color"指的是画面的颜色


基本语法

for
for i=1:10
  disp("Hello world");
end;

不像python,octave中的for不需要缩进, 其次是赋值1:10,需要end

while
a = 10;
while a > 0
  disp("HI");
  a -= 1;
end;

需要end

if/else
> if a > 1
>   disp("a is bigger than 1");
> else
>   disp("a is smaller than 1");
> endif;

>> a is smaller than 1

结束的时候是endif.

你可能感兴趣的:(Octave简明教程)