机器学习(5)----octave

octave之基础

1. v = [1:0.1:2]   : 表示从1到2 步长为0.1

    v = [1:6]    :表示[1 2 3 4 5 6]

2.  C = ones(2, 3)      : 生成2×3的全1矩阵

     C = 2 * ones(2, 3)      : 生成2×3的全2矩阵           类似的用法还有zeros()

3.  rand(a, b)       : 随机生成 a*b的矩阵 生成的数值全部介于0-1之间

      rand(3,3)        :生成3×3的矩阵      -----》符合高斯分布

4.   hist()用于绘制直方图    

eg:hist(rand(3,3))   

5.  eye(n);     :生成n阶单位矩阵

6.   help name  用于查找对应帮助信息

eg:help eye;

 

A为矩阵

7.  size(A);  :返回矩阵A的大小     

eg:

A =

   1   2
   1   3
   1   1

>> size(A)
ans =

   3   2

8.  size(A, 1);   :返回第一维度的大小      结果  3

     size(A,2);     :返回第二维度的大小    结果   2

9.length(A);       :对于矩阵则返回最大维度的大小 向量则返回其长度

10.  读取数据文件:

       load featureX.dat    或   load('featureX.dat ')

       使用 who 可以显示 octave当前的变量

       使用 whos 可以更详细地显示 octave当前的变量

        clear featureX    :表示删除featureX变量

        只输入clear  会清楚当前所有变量

11.    只提取 文件部分元素

         V = featureX(1:10);       :将前10个元素赋给v

怎样将保存至硬盘呢?

12.  save hello.mat V;      ; 表示 将变量V的内容保存至 hello.mat文件       

       注意 当使用load读取文件后 仍可以使用V变量 不个人感觉 这种意义大 长时间未使用 不一定会记得变量

 

以易读的方式保存

13. save hello.txt V -ascii         : 表示保存为txt文件 相应的压缩比会小很多

 

14.  A(2,:)    : 代表矩阵第二行的所有元素  注意是有逗号的

15.   A(,:2)    :代表矩阵第二列的所有元素

16.  A([1,3].:)  :代表第1,3行的所有元素

17.  A = [A, [100; 101; 102]]      : 在A的左侧加上一列元素

18  A( : );               : 表示把A中的所有元素转换成列向量

>> A
A =

   1   2
   1   3
   1   1

>> A(:)
ans =

   1
   1
   1
   2
   3
   1

19.   A , B 均为矩阵  

A =

   1   2
   3   4
B =

   5   6
   7   8

>> C = [A, B]  = [A B]

结果:

C =

   1   2   5   6
   3   4   7   8

octave之计算数据

A = [1          2                  B = [11        12                        C = [ 1                1 

       3           4                         13        14                                 2                2]

       5           6]                        15        16]

.  表示取矩阵中每个元素

1. 矩阵乘法: A*B

2. A.*B   :表示A中的元素乘以B中对应的元素。

                                  =[11 24;39 56; 75 96]

3. A.^2   :表示对A中每个元素求平方。

                                  =[1 4;9 16;25 36]

4. 1./V  :对V中每个元素取倒数

                                  V = [1; 2; 3]           1./V = [1;1/2; 1/3]

5. log(V)  : 对矩阵中的每个元素求对数

6.exp(V)  :以e为底的指数运算

7.abs(V)  :求绝对值

8.  -V   : 等价于-1×V

9. ones(长度,1) : 表示长度指定的全1列向量

    V + ones(length(V), 1) :表示V中每个元素+1

   ones(M, N)  : 表示返回一个M×N的全1矩阵

   注意:  length(V)  若V为向量则表示该向量的长度,如果V为矩阵则返回最大维度。

10.  A'   : 表示矩阵(向量)A的转置。

11.  a = [1 15 2 0.5]

       max[a] = 15 [结果]   

       [val, ind] = max(a)    结果: val = 15        ind = 2[下标]

  注意: 如果对矩阵使用 则默认会得到每一列的最大值。

12.  a < 3   : a = [1 15 2 0.5] 实际上是对a中的每个元素进行对比

            返回结果 : [ 1 0 1 1]

13.  find(a<3)   : 找到a中元素小于3的下标返回

            [1 3 4]

14.  A = magic(3)    :幻方 它的任一行任一列,对角线中的元素加起来都等于相同值。

         [ 8              1            6

           3              5            7

           4              9            2]

15.  [r, c] = find(A>=7)    : 返回矩阵A 中 >=7 的元素的行和列

16. sum(a)    : 对a中元素求和

17.  prod(a)  : 对a中元素求积

18.  floor(a)  : 向下取整  0.9 取为0

19.  ceil(a)  : 向上取整  0.1 取为1

20.  rand(3)  :返回一个3*3的随机矩阵

21.  max(rand(3), rand(3))  :两个矩阵对应元素相互比较,返回较大那个矩阵。

       注意:

              取矩阵中最大值   max(A(:))      其中A(:)  表示将矩阵转换成列向量

22.  sum(A, 1)  : 对A的每一列求和

      sum(A, 2)   : 对A的每一行求和

      sum(sum(A.*eye(3)))     : 对对角线元素求和

       sum(sum(A.*flipud(eye(3))))  :对副对角线元素求和    其中 flipud表示 是矩阵垂直翻转

  举个栗子:
>> A = [1 2 7; 3 4 8; 5 6 9]
A =

   1   2   7
   3   4   8
   5   6   9

>> flipud(A)
ans =

   5   6   9
   3   4   8
   1   2   7
 

add:

pinv(A)  : 求伪逆矩阵

inv(A)  : 求真实矩阵

octave数据可视化(数据绘制)

t = [0:0.01:0.98]   : 表示 从0到0.98 步长为0.01

y1 = sin(2*pi*4*t)

>>plot(t, y1)   

结果如图:

>>y2 = cos(2*pi*4*t)

>>plot(t, y2)

如何同时画在一张图上?

>>plot(t, y2);

>>hold on;

>>plot(t, y1,'r');     % r 表示用颜色(红)区分

丰富图纸内容

>>xlabel('time')     :为横坐标(x轴) 添加 time 标签

>>ylabel('value')    :为纵坐标(y轴)  添加 value 标签

>>legend('sin', 'cos')    : 标记说明曲线  右上角

>>title('my plot')     :加上标题 【图像正上方】

如何保存图像?

cd '路径名'+文件名  print -dpng 'myplot'

或者 print -dpng 'myplot'【保存在当前目录】

注意保存图片格式为 png

>>figure(1);plot(t, y1);     :为图像编号

>> subplot(1, 2, 1);     :切分单元格 将画纸切分成1*2的格子 使用第一(1)个

>>plot(t, y1);     : 在一个格子上画图

>> subplot(1, 2, 2);     :使用之前切分的格子(若已经切分),否则重新进行切分,并使用第二(2)个格子

>>plot(t, y2);      :会在第二个格子里绘图
 

>>axis([0.5 1 -1 1]);     :设置x轴 y轴的范围    axis([0 1])   只设置x轴的范围

>> clf;    // 清空当前图像

 

 

>>imagesc(A);     :用不同颜色的格子描述矩阵A的数值

>>imagesc(A),colorbar;      : 加上颜色对应区域

>>imagesc(A),colorbar,colormap gray;     : 将上图变成灰阶图 其中逗号,表示同时运行

octave的if for while

for i = 1:10,

    v(i) = 2^i;

end;

结果:

v =

      2      4      8     16     32     64    128    256    512   1024
>>indices = 1:10;

>>indices

indices =

    1    2    3    4    5    6    7    8    9   10
>> for i = indices,

disp(i);

end;

1
 2
 3
 4
 5
 6
 7
 8
 9
 10

>>i=1;

while true,

     v(i) = 999;

     i = i + 1;

     if  i==6,

         break;

     end;

 end;

>> v
v =

    999    999    999    999    999     64    128    256    512   1024
 

octave之函数

SquareThisNumber.m 文件 octave可调用文件

 function y = SqureThisNumber(X);

  y = X^2;

第一行表示 返回一个值 将其存放在变量y中

第二行 函数主体内容 y = X^2

注意:

        可以通过 addpath('函数文件所在目录')     :这样在其他目录也可以直接调用函数

Especially: 它能够返回多个值

定义一个文件 SqureAndCubeThisNumber.m

 

function [y1,y2] = SqureAndCubeThisNumber(X);

y1 = X^2;

y2 = X^3;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值