Octave与Matlab

Posted by jjx on December 1, 2016

Octave是matlab的开源免费版本,是matlab的有效替代工具,与matlab语法基本一致。

基本操作
移动数据
计算数据

矩阵也可以这样操作,1 ./ A 得到 A 中每一个元素的倒数。 同样地,这里的点号还是表示对每一个元素进行操作。 我们还可以进行求对数运算,也就是对每个元素进行求对数运算。 还有自然数 e 的幂次运算,就是以 e 为底,以这些元素为幂的运算。

我还可以用 abs 来对 v 的每一个元素求绝对值,当然这里 v 都是正数。我们换成另一 个这样对每个元素求绝对值,得到的结果就是这些非负的元素。还有 –v,给出 V 中每个元 素的相反数,这等价于 -1 乘以 v,一般就直接用 -v 就好了,其实就等于 -1*v。 还有一个技巧,比如说 我们想对 v 中的每个元素都加 1,那么我们可以这么做,首先 构造一个 3 行 1 列的 1 向量,然后把这个 1 向量跟原来的向量相加,因此 v 向量从[1 2 3] 增至 [2 3 4]。我用了一个,length(v) 命令,因此这样一来,ones(length(v) ,1) 就相当于 ones(3,1),然后我做的是 v + ones(3,1),也就是将 v 的各元素都加上这些 1,这样就将 v 的 每个元素增加了 1。

矩阵 A 如果你想要求它的转置,那么方法是用 A’,将得出 A 的转置矩阵。当然,如果我 写 (A’)’,也就是 A 转置两次,那么我又重新得到矩阵 A。 还有一些有用的函数,比如: a=[1 15 2 0.5],这是一个 1 行 4 列矩阵, val=max(a),这 将返回 A 矩阵中的最大值 15。 我还可以写 [val, ind] = max(a),这将返回 a 矩阵中的最大值存入 val,以及该值对应的 索引,元素 15 对应的索引值为 2 存入 ind,所以 ind 等于 2 特别注意一下,如果你用命令 max(A), A 是一个矩阵的话,这样做就是对每一列求最 大值。 我们还是用这个例子,这个 a 矩阵 a=[1 15 2 0.5],如果输入 a<3,这将进行逐元素的 运算,所以元素小于 3 的返回 1,否则返回 0。

如果我输入 [r,c] = find( A>=7 ),这将找出所有 A 矩阵中大于等于 7 的元素,因此,r 和 c 分别表示行和列,这就表示,第一行第一列的元素大于等于 7,第三行第二列的元素大于 等于 7,第二行第三列的元素大于等于 7。

如果我想把它们都乘起来,键入 prod(a),prod 意思是 product(乘积),它将返回这四个元素的乘积。
floor(a) 是向下四舍五入,因此对于 a 中的元素 0.5 将被下舍入变成 0。
还有 ceil(a),表示向上四舍五入,所以 0.5 将上舍入变为最接近的整数,也就是 1。 键入 type(3),这通常得到一个 3×3 的矩阵,如果键入 max(rand(3), rand(3)),这样做的
结果是返回两个 3×3 的随机矩阵,并且逐元素比较取最大值。
假如我输入 max(A,[],1),这样做会得到每一列的最大值。
所以第一列的最大值就是 8,第二列是 9,第三列的最大值是 7,这里的 1 表示取 A 矩 阵第一个维度的最大值。
相对地,如果我键入 max(A,[],2),这将得到每一行的最大值,所以,第一行的最大值是 等于 8,第二行最大值是 7,第三行是 9。

绘图数据

t = (0:0.01:0.98);
y1 = sin(2*pi*4*t);
plot(t,y1);

如果你想保存这幅图像,你输入 print –dpng ‘myplot.png’,png 是一个图像文件格式,如 果你这样做了,它可以让你保存为一个文件。

最后如果你想,删掉这个图像,用命令 close 会让这个图像关掉。

imagesc(A),colorbar,colormap gray