GNU Octave数据加载移动操作

GNU Octave移动加载数据


如果你有一个机器学习问题,你怎样把数据加载到Octave中?

  • 怎样把数据存入一个矩阵?
  • 如何对矩阵进行相乘?
  • 如何保存计算结果?
  • 如何移动这些数据并用数据进行操作?

这里构建一个3行2列的矩阵,Octave中的size()命令返回矩阵的尺寸

设置sz=size(A),其实第一个元素是3,第二个元素是2,对应A的行与列,表示矩阵sz维度

你也可以再将size()命令进行size进行计算,返回sz矩阵的行列,即1行2列,也就是1x2矩阵。

这里可以通过size命令size(A,1),计算A矩阵的第一个元素,返回A矩阵的第一个维度的尺寸,也就是A矩阵的行数。

同样,通过size命令size(A,2),计算A矩阵的第二个元素,返回A矩阵的第二个维度的尺寸,也就是A矩阵的列数。

对于向量与矩阵,除了size()命令之外,还可以使用length()进行计算
由于矩阵A是3x2的矩阵,最大的维度应该是3,因此该命令会返回3

类似地,若一个1x5的矩阵,使用length()将会返回5

如何在系统中加载数据和寻找数据

通过who命令,显示出目前在octave工作空间中的所有变量

另外可以通过whos命令,对所有变量进行更详细地进行查看

可以使用clear命令,对工作空间中的变量进行删除

显示featuresX

显示priceY

另外一个问题是,我们怎么储存数据?
这里可以设变量V = priceY(1:10),作用是将向量Y的前10个元素存入V中

假如我们想把它存入硬盘,你们可以使用save filename.mat V
save会将变量V存成一个叫指定名称,以.mat为后缀的文件

这个命令会把数据按照二进制形式储存,或者说是更压缩的二进制形式,因此如果变量V是很大的数据,那么压缩幅度也更大,
占用空间也会更小。
如果你想把数据存成别人能看懂的形式,那么可以使用下面的命令:

下面继续回到操作数据
假设矩阵A还是之前那个,那个根据(x,y)的索引值,即可打印出对应的x行y列的值。

使用A(:,2),这将返回矩阵A中第二行的所有元素,其中冒号":"表示该行或者该列的所有元素。

使用A(2,:),这将返回矩阵A中第二列的所有元素

除此之外,这里还可以取A矩阵的第一个索引值为1或3的元素,也就是说取得的是A矩阵的第一行和第三行的每一列,
其中冒号表示的是取这两行的每一列元素

同样地,这里可以重新对A矩阵的第二列进行赋值,实际上是取出了A取值的第二列,再将一个列向量赋给它,因此第一列保持不变。

接下来,可以把A设为A = [A,[100; 101; 102]],这样做的结果是在原矩阵的右边附加了一个新的列矩阵,
就是把A矩阵设置为原来的A矩阵再从右边附上一个新添加的列矩阵。

值得一提是,还有一个小技巧,就是如果你输入A(😃,这是一个很特别的语法结构,意思是A中的所有元素放入一个单独的列元素,
这样我们就得到一个9x1的向量,这些元素都是A中的元素排列起来。

再来几个例子:
继续将以矩阵A为例,如果再设一个B为[11 12; 13 14; 15 16],我们可以新建一个矩阵C = [A B],
这个意思就是吧这两个矩阵直接连在一起,矩阵A在左边,矩阵B在右边,这样组成了C矩阵。

另外顺便说一下,这个[A B]命令跟[A,B]是一样的,这两种写法的结果是相同的。

同样地,我们还可以设C = [A; B],这里的分号表示把分号后面的内容放在下面。
因此[A;B]的作用还是合并两个矩阵,不同的是,这里是进行矩阵的上下排列,从而C就是一个6x2的矩阵

以上,通过上面的讨论和演示,Octave能够很方便地很快速地帮助我们组合复杂的矩阵以及数据进行移动。

posted @ 2022-01-27 00:29  Xu_Lin  阅读(60)  评论(0编辑  收藏  举报