Octave简明教程

作者: Pan231 | 来源:发表于2018-04-24 14:04 被阅读1987次

这里就不介绍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简明教程

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

  • OPENGL ES 教程

    Android OpenGL ES 简明开发教程一:概述Android OpenGL ES 简明开发教程二:构造O...

  • webpack 几个很棒的教程

    初学webpack,网上找到了几个简明易懂的入门教程十分感谢教程的作者! WebPack 简明学习教程 Webpa...

  • Linux 常用命令总结

    linux 命令速查手册linux 常用操作命令 sed 简明教程 awk 简明教程 常用命令 ls ...

  • Octave教程(二)

    如何求矩阵、向量的维数 其中,length()表示求出矩阵或向量的最大维数。 如何导入数据 在导入数据之前,需要用...

  • Octave教程(三)

    矩阵运算 其中,“.”表示元素位运算。 如何求转置矩阵 一些有用的函数 其中,flipud()实现矩阵的上下翻转。

  • Octave教程(四)

    ####### 绘制图表 绘制sin函数图: 结果如图所示: 绘制cos函数图: 结果如图所示: 将两个函数图放置...

  • Octave教程(五)

    控制语句 函数 我们先创建costFunctionJ.m文件,并在其添加如下代码: 然后,我们在Octave的CL...

  • Octave教程(六)

    向量化 对于上图的假设函数h,我们在非向量化的情况下可写出如下代码: 注:j从1~n+1是因为在Octave中下标...

  • Octave教程(一)

    基本操作 加减乘除和幂次方操作 布尔运算 在Octave的命令行界面,即CLI中,在一条语句的后面添加一个分号,不...

网友评论

    本文标题:Octave简明教程

    本文链接:https://www.haomeiwen.com/subject/rharlftx.html