1. 程式人生 > >Octave 基礎操作總結(一)

Octave 基礎操作總結(一)

Octave 基本操作總結 一(觀吳恩達機器學習課程筆記)

Octave作為類似Matlab和Python等,很方便對資料進行操作。是一個極其便捷且快速進行機器學習模型建立的IDE。本文主要以吳恩達《機器學習》課程學習筆記為主總結的Octave基礎操作,課程地址:http://study.163.com/course/courseMain.htm?courseId=1004570029

  • 基本操作
  • 移動資料
  • 計算資料

一 基本操作

1.更改標誌,PS1括號中是什麼,以後用的標誌每行標誌號就是什麼

>>PS1('>')
>

2.不加分號,回車會顯示結果,末尾加分號,不顯示結果。disp(a);輸出

>>a=3
a = 3
>>a=3;
>>disp(a)
 3
>>disp(a);
 3

3.%是註釋,printf輸出 (此處不明白為何輸出會有16)

>>a=pi;   %輸出a
>>a
a =  3.1416
>>disp(printf(' 2 decimads:%0.2f',a))
 2 decimads:3.14 16
>>

4.矩陣 / 行向量 / 列向量

%矩陣
>>A=[1 2;3 4;5 6]
A =

   1   2
   3   4
   5   6

>>A=[1 2;
3 4;
5 6]
A
= 1 2 3 4 5 6 %行向量 륄>>v=[1 2 3] v = 1 2 3 %列向量 >>v=[1;2;3] v = 1 2 3

5.從1~2每隔0.1顯示一個數

>>v=1:0.1:2
v =

    1.0000    1.1000    1.2000    1.3000    1.4000    1.5000    1.6000    1.7000    1.8000    1.9000    2.0000

6.1~6賦值

>>v=1:6
v =

   1   2   3   4   5   6

7.全1矩陣 ones,零矩陣z eros,隨機數矩陣 rand, 單位矩陣 eye

>>ones(2,3)
ans =

   1   1   1
   1   1   1
>>c=2*ones(2,3)
c =

   2   2   2
   2   2   2

>>c=[2 2 2;2 2 2]
c =

   2   2   2
   2   2   2

>>w=ones(1,3)
w =

   1   1   1

>>w=zeros(1,3)
w =

   0   0   0

>>w=rand(1,3)
w =

   0.620290   0.510380   0.048429

>>w=rand(2,2)
w =
   0.89532   0.10284
   0.47973   0.68465
>>eye(4)
ans =
Diagonal Matrix
   1   0   0   0
   0   1   0   0
   0   0   1   0
   0   0   0   1

8.繪製成直方圖 hist(w,50) 資料w,繪製50條(直方圖條數)

>>w=rand(1,3)
w =
   0.33843   0.76924   0.75417
>>hist(w)

hist(w)繪製直方圖

9.幫助(函式檢視)help 命令

%檢視函式 eye
>>help eye
'eye' is a built-in function from the file libinterp/corefcn/data.cc

 -- eye (N)
 -- eye (M, N)
 -- eye ([M N])
 -- eye (..., CLASS)
     Return an identity matrix.

     If invoked with a single scalar argument N, return a square NxN
     identity matrix.

     If supplied two scalar arguments (M, N), 'eye' takes them to be the
     number of rows and columns.  If given a vector with two elements,
     'eye' uses the values of the elements as the number of rows and
     columns, respectively.  For example:

          eye (3)
           =>  1  0  0
               0  1  0
               0  0  1

     The following expressions all produce the same result:

          eye (2)
          ==
          eye (2, 2)
          ==
          eye (size ([1, 2; 3, 4]))

     The optional argument CLASS, allows 'eye' to return an array of the
-- less -- (f)orward, (b)ack, (q)uit

          val = zeros (n,m, "uint8")
-- less -- (f)orward, (b)ack, (q)uit
     Calling 'eye' with no arguments is equivalent to calling it with an
     argument of 1.  Any negative dimensions are treated as zero.  These
-- less -- (f)orward, (b)ack, (q)uit

二 移動資料

1.求矩陣維數 size ,返回第一維大小size(A,1),返回第二維大小size(A,2) 返回矩陣最大維度 length(A),返回向量長度length(v)

>>se=size(A)
se =
   3   2
>>size(A,1)
ans =  3
>>size(A,2)
ans =  2
>>length(A)
ans =  3
>>v
v =
   1   2   3   4   5   6
>>length(v)
ans =  6

2.載入系統檔案。檢視預設路徑 pwd 。更改路徑 cd’’ ,who顯示目前所以變數,load的兩種方式載入.dat檔案。檔名為變數名。如下,第一次載入data.dat,用who列出變數中有data變數。然後匯入data_c.dat檔案,再用who列出所以變數中增加了data_c變數。whos是更詳細的變數資訊。v=data(1:10將data的前十個元素給了v,最後儲存hello.mat

>>pwd
ans = C:\Users\75690
>>cd 'E:\Desktop'
>>pwd
ans = E:\Desktop
>>load data.dat
>>who
Variables in the current scope:
A     a     ans   c     data  se    v     w
>>load('data_c.dat')

>>who
Variables in the current scope:
A       a       ans     c       data    data_c  se      v       w

>>whos
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        A           3x2                         48  double
        a           1x1                          8  double
        ans         1x10                        10  char
        c           2x3                         48  double
        data       16x1                        128  double
        data_c      9x3                        216  double
        se          1x2                         16  double
        v           1x6                         24  double
        w           1x3                         24  double

Total is 77 elements using 522 bytes

>>v=data(1:10)  %變數data的前十個資料賦值給向量v
v =
    345
    242
     35
    123
   2454
    664
     46
     46
    567

>>save hello.mat v;

桌面截圖

3.clear清除工作空間所有變數
4.索引查詢元素

>> A=[1 2;3 4;5 6]
A =
   1   2
   3   4
   5   6
>> A(3,2)     %矩陣A三行二列的元素 6
ans =  6
>> A(2,:)     %第二行所有元素
ans =
   3   4
>> A([1,3],:)   %第1和第3列所有元素
ans =
   1   2
   5   6
>> A(:,2)=[10;11;12]    %給A的第二列賦值
A =
    1   10
    3   11
    5   12 

5.矩陣合併 [A B]左右合併。[A;B]上下合併

>> A=[A,[100;101;102]]  %給A的右邊附加一列新的列向量
A =
     1    10   100
     3    11   101
     5    12   102
>> A=[1 2;3 4;5 6]   %重新給A賦值
A =
   1   2
   3   4
   5   6

>> B=[11 12;21 22;31 32]   %定義B
B =
   11   12
   21   22
   31   32

>> C=[A B]   %左右合併
C =
    1    2   11   12
    3    4   21   22
    5    6   31   32

>> c=[A;B]        %上下合併
c =
    1    2
    3    4
    5    6
   11   12
   21   22
   31   32

三 計算資料

以下為基本資料運算方法( . 是對元素進行運算)

>> A=[1 2;3 4;5 6];
>> C=[1 2 3;4 5 6];
>> A*C         %矩陣乘法
ans =
    9   12   15
   19   26   33
   29   40   51
>> B=[12 13;21 23;31 33];
>>> A.*B     %對應元素相乘
ans =
    12    26
    63    92
   155   19

>> A.^2    %A對應元素求平方
ans =
    1    4
    9   16
   25   36

>> v=[1 2 3 4]
v =
   1   2   3   4
>> 1./v       %求倒數
ans =
   1.00000   0.50000   0.33333   0.25000
>> log(v)   %求log
ans =
   0.00000   0.69315   1.09861   1.38629
>> exp(v)   %以e為底,以v中元素為指數的冪運算
ans =
    2.7183    7.3891   20.0855   54.5982
>> abs(v)    %所有元素的絕對值
ans =
   1   2   3   4
>> -v     %相當於求 -1*v
ans =
  -1  -2  -3  -4
>> v=[1;-2;4;9];
>> v+ones(length(v),1)  %技巧性:給每個元素加1
ans =
    2
   -1
    5
   10
>> A
A =
   1   2
   3   4
   5   6
>> A'      %計算A的轉置
ans =
   1   3   5
   2   4   6

>> val=max(v)   %返回向量v最大元素
val =  9
>> [val,ind]=max(v)  %返回向量v最大元素及最大元素的索引
val =  9
ind =  4

>> max(A)  %返回矩陣A每一列的最大值
ans =
   5   6

>> a=[1 15 2 0.5];   
>> a<3      %a中小於3.則返回1,返回0為否
ans =
  1  0  1  1
>> find(a<3)   %找到小於3的值返回索引號
ans =
   1   3   4

>> A=magic(3)    %magic返回一種幻方矩陣(所有行所有列,對角線元素相加值相同)
A =
   8   1   6
   3   5   7
   4   9   2
>> [r,c]=find(A>=7)  
r =        %r行c列(索引)
   1
   3
   2
c =
   1
   2
   3

>> sum(a)       %a中所有元素求和
ans =  18.500
>> prod(a)    %所有元素乘積
ans =  15
>> floor(a)   %向下取整
ans =
    1   15    2    0
>> ceil(a)   %向上取整
ans =
    1   15    2    1

ꥩ>> max(A,[],1)    %從A的第一維取第一維(列)最大的
ans =
   8   9   7
>> max(A,[],2)    %從第二位(行)取最大的
ans =
   8
   7
   9
>> max(max(A))   %求矩陣A最大值
ans =  9


>> eye(3)
ans =
   1   0   0
   0   1   0
   0   0   1
>> flipud(eye(3))   %flipud()矩陣垂直翻轉
ans =
   0   0   1
   0   1   0
   1   0   0

>> pinv(A)    %矩陣求逆(其實計算的是偽逆)
ans =
   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778
  • *資料繪製
  • 控制語句 if while for
  • 總結
    請見另一篇《Octave 基礎操作總結(二)》