1. 程式人生 > >Matlab常用語法和基本運算

Matlab常用語法和基本運算

(一)Matlab基本操作

   1> 實數的加減乘除乘方等運算

      可直接在Matlab的控制檯下進行對應的操作,如下。

>> 5+6
ans =
    11

>> 3-2
ans =
     1

>> 5*7
ans =
    35

>> 5*8
ans =
    40

>> 1/2
ans =
    0.5000

>> 2^6
ans =
    64

  2>邏輯運算,1表示真,0表示假

>> 1 == 2               %false
ans =
     0

>> 1 ~= 2               % ~=表示不等於
ans =
     1

>> 1 && 0               % 與  
ans =
     0

>> 1 || 0               % 或
ans =
     1

>> xor(1,0)             %異或
ans =
     1

   3>變數賦值和矩陣初始化

>> a = 3               %變數賦值
a =
     3

>> b = 'hi';           %變數賦值的時候,最後的末尾有一個分號
>> b = 'hi'            %其中有:表示不把結果輸出到控制檯,沒有分號表示將結果輸出到控制檯
b =
hi

>> a = pi;             %在向控制檯輸出結果的時候,也可以用disp()函式
>> disp(a)
    3.1416

>> a = pi;
>> disp(a)
    3.1416
>> format long         %format long命令是讓數值輸出的位數變的多
>> a
a =
   3.141592653589793

>> format short        %format short命令是讓數值輸出的位數變的少
>> a
a =
    3.1416
-------------------------------------------------------------------------------------


>> A = [1 2; 3 4; 5 6] %建立3行2列的矩陣
A =
     1     2
     3     4
     5     6

>> v = [1;2;3]         %建立3行一列/列向量
v =
     1
     2
     3

>> v = 1:6             %建立6個數
v =
     1     2     3     4     5     6


>> v = 1:0.1:2         %從1開始到2,每隔0.1建立一個數
v =
  1 至 6 列
    1.0000    1.1000    1.2000    1.3000    1.4000    1.5000
  7 至 11 列
    1.6000    1.7000    1.8000    1.9000    2.0000

>> ones(2,3)           %建立3行2列的全一矩陣
ans =
     1     1     1
     1     1     1

>> w = zeros(1,3)      %建立3行1列的全0矩陣
w =
     0     0     0

>> w = rand(1,3)       %建立1行3列的隨機矩陣
w =
    0.8147    0.9058    0.1270

>> eye(5)              %建立5行5列的單位矩陣
ans =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

>> A = magic(5)        %建立幻方矩陣,幻方矩陣,就是行和,列和,對角線元素的和都相等。
A =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

(二)Matlab移動資料

>> A = [1 2;3 4; 5 6]               %建立一個3行2列的矩陣
A =
     1     2
     3     4
     5     6

>> size(A)                          %求矩陣的大小,為3行2列
ans =
     3     2

>> size(A,1)                        %求矩陣行的大小
ans =
     3

>> size(A,2)                        %求矩陣列的大小
ans =
     2

>> length(A)                        %求矩陣行的大小和列的大小中較大的
ans =
     3

>> load ex1data1.txt                %從檔案中載入資料
>> ex1data1                         %顯示出檔案中的資料
ex1data1 =
    6.1101   17.5920
    5.5277    9.1302
    8.5186   13.6620
    ......   .......

>> who                              %可以用who來表示當前變數

您的變數為:
A         ans       ex1data1         

>> whos                             %用來顯示出變數的資訊 
  Name           Size            Bytes  Class     Attributes

  A              3x2                48  double              
  ans            1x18               36  char                
  ex1data1      97x2              1552  double              

>> clear ans                        %刪除變數資訊

>> v = ex1data1(1:10)               %將ex1data1中的資料1-10賦值給v

>> save hello.mat v;                %講變數v儲存到hello中,字尾名為.mat

>> save hello.txt v -ascii          %將變數v儲存到hello中,字尾名為.txt格式

>> A                                %輸出矩陣A的值
A =
     1     2
     3     4
     5     6
>> A(3,2)                           %輸出矩陣中A(3,2)的元素
ans =
     6

>> A(2,:)                           %輸出矩陣中的第二行元素
ans =
     3     4

>> A(:,2)                           %輸出矩陣中的第二列元素
ans =
     2
     4
     6

>> A([1 3],:)                       %輸出矩陣中的第一行,第三行的元素
ans =
     1     2
     5     6

>> A(:,2)=[10;11;12]                %將矩陣中第二列元素替換為[10;11;12]
A =
     1    10
     3    11
     5    12

>> A = [A,[100;101;102]]            %在矩陣後新新增一列,在這裡用;間隔表示元素是列元素。
A =                                 %用,間隔,表示元素是行元素。如下所示
     1    10   100
     3    11   101
     5    12   102

>> A=[A;[100,101,102]]
A =
     1    10   100
     3    11   101
     5    12   102
   100   101   102


   (三)  Matlab計算資料

    1>矩陣元素的基本運算:矩陣乘法,矩陣中對應元素乘積等

>> A = [1 2;3 4;5 6]               %建立3行2列矩陣A
A =
     1     2
     3     4
     5     6

>> B =[11 12;13 14;15 16]          %建立3行2類矩陣B
B =
    11    12
    13    14
    15    16

>> C = [1 1; 2 2]                  %建立2行2列矩陣C
C =
     1     1
     2     2

>> A*C                             %計算矩陣A和矩陣C的乘積
ans =
     5     5
    11    11
    17    17

>> A .* B                          %計算矩陣A中的每個元素和B中的每個元素對應相乘。
ans =
    11    24
    39    56
    75    96

>> A .^ 2                          %表示把A中的每個元素都平方,其中.的意思是操作元素。 
ans =
     1     4
     9    16
    25    36

>> A'                              %矩陣的轉置
ans =

     1     3     5
     2     4     6

>> A = magic(3)                    %建立幻方矩陣
A =
     8     1     6
     3     5     7
     4     9     2

>> pinv(A)                         %對矩陣A求逆
ans =
    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

>> A(:)                            %將3行3列的矩陣變成9行1列的矩陣
ans =
     8
     3
     4
     1
     5
     9
     6
     7
     2
-------------------------------------------------------------------------------------
%對矩陣進行函式操作
>> v = [1;2;3]                     %建立3行1列矩陣
v =
     1
     2
     3

>> 1 ./v                           %對矩陣中每個元素取倒數 
ans =
    1.0000
    0.5000
    0.3333

>> exp(v)                          %對每個元素進行指數操作
ans =
    2.7183
    7.3891
   20.0855

>> -v                              %矩陣中每個元素取反
ans =
    -1
    -2
    -3

   (四)  Matlab資料繪製

     1>用matlab進行資料繪製

>> t = [0:0.01:0.98];                  %初始化自變數的範圍
>> y1 = sin(2*pi*4*t);                 %初始化因變數的範圍,y1為正弦函式
>> y2 = cos(2*pi*4*t);                 %初始化因變數的範文,y2為餘弦函式

>> plot(t,y1)                          %繪製正弦函式影象
>> hold on                             %執行此命令是為了讓兩個函式影象繪製在一起
>> plot(t,y2)                          %繪製餘弦函式影象
>> xlabel('time')                      %x座標的標籤
>> ylabel('value')                     %y座標的標籤
>> legend('sin','cos')                 %影象標記
>> title('my plot')                    %主題
>> print -dpng 'myPlot.png'            %儲存影象
>> close                               %關閉影象

>> subplot(1,2,1)                      %將影象分為兩部分,在兩部分上分別繪製
>> plot(t,y1)
>> subplot(1,2,2)                      
>> plot(t,y2)
>> axis([0.5 1 -1 1])

 做出的影象如下所示:

 

 

 參考資料:網易雲課堂-吳恩達-機器學習公開課