Octave 移动数据

首先键入一个矩阵A:

 

这是一个3行2列的矩阵,Octave中的size命令可以返回矩阵的维度。

 

实际上size()所返回的是一个 1 x 2的矩阵,所以可以把A的大小作为一个矩阵来存放,这个矩阵的维度是 1 x 2 。

 

由于现在B是一个1 x 2的矩阵,如果用size()去返回B的大小,会得到一个1 x 2的矩阵,矩阵的两个元素包括了矩阵B的维度。

 

也可以输入size(A,1),这将返回矩阵A的第一维度的大小,也就是A矩阵的行数,同样输入size(A,2)就会返回矩阵A的第二维度的大小,也就是A矩阵的列数。

 

现在键入一个向量V,V = [1 2 3 4],然后输入length(V),会返回最大维度的大小:

 

也可以输入length(A),因为A是一个3 x 2的矩阵,较大的那一个维度是3,所以该命令会返回3。

 

 

但通常是对向量使用length命令,而不对矩阵使用length命令,因为这容易造成误解。

 

下面来看看如何在文件系统中加载和查找数据?

当打开Octave时,通常已经在一个默认路径中,它是Octave程序的安装路径,使用pwd命令可以查看Octave当前所处路径:

 

用cd命令,表示改变路径,例如我将路径改变为我的一个文件夹内,然后再键入pwd,可以看到已经修改成功:

 

如果输入ls,ls是来自Unix和Linux的命令,ls命令将列出桌面路径。

现在我的当前路径里面已经有一个文件,featuresX.txt。

如果想要把数据读入Octave,只需要用load命令来载入featuresX.txt,这样就可以加载featuresX.txt了

当然也可以用load('featuresX.txt'),这与上面的命令的效果是相同的,只是把文件名写成了字符串的形式,在Octave中使用单引号可以表示字符串。

 

另外who命令,可以显示Octave中的所有变量。也就是说who命令可以显示当前Octave在内存中储存的所有变量。

 

可以看到featuresX已经在里面了,也说明之前载入成功了。所以现在可以输入featuresX来显示featuresX中的数据。

 

再输入size(featuresX),可以看到这是一个9 x 2的矩阵:

 

现在who可以显示出当前工作空间中的所有变量,还有一个命令whos能显示更详细的变量信息,例如变量的维度,占用多少字节的内存空间以及它们的数据类型:

 

如果想要删除某个变量,可以使用 clear 变量命令,然后再输入whos命令,就可以查看该变量是否已被删除。

另外,怎么储存数据呢?

首先,我们先载入一个在当前路径下的一个priceY.txt文件,然后我们先来看一下这个文件长什么样子。

我们设变量 v = priceY(1:10),这表示的是将向量priceY的前10个元素赋给v。

 

如果想把这些数据存入硬盘,那么可以用 save file1.mat v 命令,这个命令会将变量v保存为一个file1.mat的文件,存在当前路径中。

现在如果想要清除所有变量,可以直接输入clear命令删除工作空间中的所有变量。再输入whos可以看到,工作空间已经被清空了。

 

但如果再载入file1.mat文件,现在变量v又可以被读取了,因为这个变量之前被存入了file1.mat中。刚才输入的 save file1.mat v 命令将数据储存为了二进制的格式,或者说是更压缩的二进制格式。如果v的数据量很大,那么它被压缩的程度也更大,它的占用空间也会更小。如果你想把数据储存成人类能看懂的形式,可以输入 save file1.txt v -ascii ,这样就会把数据储存成文本文档或者说用ascii编码的文档。

 

输入了这个命令以后,这个文档就会出现在pwd所显示的那个路径里。现在将这个文档打开,可以看到这个文档存着v向量。

这就是读取和储存数据的方法。

 

现在来看一看如何操作数据

首先还是设置一个A矩阵:

 

现在来看看索引,比如输入A(3,2),这将索引到A的第三行第二列的元素:

 

也可以输入A(2,:)来获得第二行的所有元素,因此冒号表示该行或该列的所有元素。

类似地,如果输入A(:,2),这将返回A的第二列的所有元素:

 

你可以在运算中使用这种复杂的索引,例如下面这种方式:

这样可以得到A中第一个索引值为1和3的所有元素,也就是说可以得到A的第一行和第三行中所有列的元素。不过这些复杂的索引操作,你不会经常用到。

再看看我们还能做些什么?输入A(:,2)来获得A的第二列。也可以通过这种方法来赋值,取A的第二列,将它的第二列赋值为10 11 12。

这样做的话,实际上是取出了A的第二列,用列向量[10;11;12]取而代之。

 

接下来,把A设为 [A,[100;101;102]],这样做的结果是在A的右边附加了一列新的列向量。

此时可以看到A的维度已经变为了3行3列。

 

还有一个有时会用到的有用的小技巧。如果你像下面这样,只是输入A(:),这是一个很特别的语法,意思是把A中的所有元素放入一个单独的列向量。

这样我们就得到了一个 9 x 1的向量,这些元素都是由A中的元素排列起来的。

 

再来看几个例子:

假如把A重新设为[1 2;3 4;5 6],将B设为[11 12;13 14;15 16]。现在,新建一个矩阵C。令C = [A B]意思是把这两个矩阵结合在一起。矩阵A在左边,矩阵B在右边。

还可以设C = [A;B],这里的分号表示,把分号后面的矩阵放到前一个矩阵的下面,也就是将矩阵A和矩阵B进行上下合并,A在上面,B在下面,C现在就是一个 6 x 2的矩阵。

简单的说,分号的意思就是换到下一行,所以A先被放到C中,然后换到下一行,再将B放进去。

 

另外[A B]和[A,B]是一样的。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值