目录
octave的基本操作
假设现在有两个文件,一个存放了房屋大小和有几个卧室的信息,一个只存放了房屋的大小,并且只有47个数据,那么具体的格式如下:
1205 6
2200 3
等等以此类推,那么如何把数据读入octave中呢,那么可以使用如下方式:
load 文件名例如load price.dat 或者是load ('price.dat')
用who可以显示当前存储的变量,whos显示更详细的信息
用clear删除变量 用法clear 变量名
v = price(1:10)就把price中的前10个数据赋给v了
用save hello.mat v:可以把这个数据存入硬盘但是以压缩的二进制存储
如果想存储为文档形式,那么可以使用save hello.txt v -ascii % save as text(ASCII)
输入clear将清除所有变量,下图是讲关于矩阵的用法
其中,A.*B是A中的每个元素与B中对应的元素相乘
这个是将A中的每个元素进行平方
这个图是求倒数
那么floor函数会对a中的每个元素向下取整,而ceil函数会对a中的每个元素向上取整
那么使用这个会得到A中每一列的最大值
这个会得到A中每一行的最大值
pinv是求A的逆矩阵
数据绘制
下面这个例子给我们演示了如何利用octave生成数据的图像,首先需要创建一个矩阵,然后定义一个正弦函数,绘制图像用plot函数
下图演示了对这个图像的操作,最后可以将这个图像输出为png格式并保存到桌面上,close命令可以关掉图像
使用figure 命令可以让你为图像标号,那么现在桌面上就有两张图像
subplot将图像分为一个1*2的格子,现在使用第一个格子,那么可以看下面这个例子就明白了:
使用axis可以改变轴的刻度,那么就会改变x轴和y轴的范围,将x轴范围调整到0.5到1,将y轴的范围调整到-1到1,不用图显示了
当然,你可以使用help axis来了解具体的用法,使用clf来清除图像
1.如何使用控制语句如while或for循环,定义一个函数
那么在下面这个例子中,首先定义了一个向量,然后使用了for循环,while循环,这里的空格只是为了代码清晰
接下来的例子将展示如何在while循环里面使用break语句以及如何使用if-else语句
2.如何定义和调用函数
需要先创建一个文件,并且以你的函数名来命名,然后以.m的后缀结尾,使用写字板打开这个程序来编辑这个函数
调用函数时需要先切换到存放函数文件的目录下,再调用这个函数,比如说如下图:
如果定义了addpath('存放函数的路径')那么这样系统会自动去这个目录下找你的函数文件
那么,在octave中,可能函数会有多个返回值,那么我们可以用下面右图的方式使用它:
现在有个更复杂的例子,假设我有一个数据集,数据点为(1,1),(2,2),(3,3),那么我需要定义一个octave函数来计算代价函数J(),所以我需要先把数据放在octave中,因此把设计矩阵X设置为如下,其中第一列表示X0的值实际就是1,那么第二列是X1的值,接下来还要设定
的值,即通过语句theta = [0;1]
那么,最后通过调用函数计算J()的值,那么如果设置theta是如下所示那么计算结果就会不一样了:
3.矢量
我们需要注意有时候采用向量化的方式更容易解决问题,因为提供一些线性代数的库,例子如下: