1 / 43

Matlab 教學

Matlab 教學. Speaker : 林昱志 Date : 2012/10/25. Outline. 字串與字元 結構 陣列 多質陣列 基本的繪圖指令 二維繪圖區域控制 影像處理指令. 字串與 字元. 數個字元 (characters) 可以構成一個字串 (strings) 。 一個字串是被視為一個列向量 (row vector) 進行儲存。 此一字串中的每一字元 ( 含空白字元 ) ,是以其 ASCII 碼的形式存放於此列向量中的每一個元素 (element) 。

garson
Download Presentation

Matlab 教學

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Matlab教學 Speaker:林昱志 Date:2012/10/25

  2. Outline • 字串與字元 • 結構陣列 • 多質陣列 • 基本的繪圖指令 • 二維繪圖區域控制 • 影像處理指令

  3. 字串與字元 • 數個字元(characters)可以構成一個字串(strings)。 • 一個字串是被視為一個列向量(row vector)進行儲存。 • 此一字串中的每一字元(含空白字元),是以其 ASCII 碼的形式存放於此列向量中的每一個元素(element)。 • >>str1 =['M' 'a' 't' 'l' 'a' 'b'] • >>str2 = Matlab

  4. 字串與字元 • 字串裡每一個字元是以ASCII碼的型式來存放,只是在顯示是以字元的方式來顯示。 • 如果要顯示字串每一個字元的ASCII碼,可用double函數。 • >>ascii = double(str1) double ASCII碼 77 97 116 108 97 88 str1 =[‘M’ ‘a’ ‘t’ ‘l’ ‘a’ ‘b’]

  5. 字串與字元 • ASCII碼轉換成字串,可用char函數。 • >>char(ascii ) char 77 97 108 97 88 str1= Matlab

  6. 字串與字元 • 在Matlab裡,可以利用二維的陣列來儲存兩個或兩個以上的字串。 season =['Spring';'Summer';'Autumn']; 字串長度不一,會出現錯誤訊息。 month=['April'; 'May'; 'Jume']; 補入空白字元,使字串長度相等。 month=['April'; 'May '; 'Jume'];

  7. 字串與字元 • 字串與數值轉換函數

  8. 結構陣列 • 陣列只能存放一群相同的資料形態,結構(structure)就沒有這個限制。 • 『結構』可以把不同的資料形態組合起來,形成一個新的資料形態,這就是『結構』的概念。 • Matlab結構的概念源自於C語言,因此其語法也和C語言的結構非常類似。 • 每一個結構陣列(structure array)可以包含很多個元素,每一個元素可以看成是一筆資料。因此每個元素可以包含數個欄位(fields),而每個欄位可包含各個不同型態的資料。

  9. 結構陣列 • 例如一個包含學生(student)個人資料的結構陣列,可能含有的欄位是name(學生姓名)、id(學號)、scores(小考成績)等。要建立此種結構,可在指令列直接輸入個欄位的值

  10. 結構陣列 • 過去必須使用不同形態的變數來儲存,但有Matlab所提供的變數可以將有關連性,形態不同的資料放在同一個變數裡。 • 結構可分為兩大部分,即『結構名稱』與『欄位名稱』。 • 不論是設定或是取用結構的欄位,只要依循: • 結構名稱﹒欄位名稱

  11. Example • >>student.name='THU'; • >> student.id='R95631020'; • >> student.scores=[80 50 60]; • >> student =struct('name', '柚子', 'id', 'R95631024', 'scores',[80 50 60]);

  12. 多質陣列 • 多質陣列與結構陣列的概念相近,但其比結構陣列更具有彈性。 • 多質陣列的英文為cell array,cell是小組織之意,代表這個陣列裡,每一個元素都可以是不同的型態。

  13. 多質陣列 • 在一般陣列中元素必須為數值,但在多質陣列中的每個元素可為不同的資料形態。 • 多質陣列產生方式和一般陣列的產生方式相似,只是此時是使用中括號『{ }』。

  14. Example • >>cell = {'cell array' , 1234 ; [ 1 2 ; 3 4 ] , {[1 2], 'str'}} ‘cell array’ 1234 cell = 1 3 ‘str’ 1 2 2 4

  15. 多質陣列 • 元素取出之方式,以及其索引和一般陣列相似。 1 3 cell {2,1}= ‘cell array’ 1234 2 4 2 cell = cell {2,1}(2,1)= 1 3 ‘str’ 1 2 2 4 1 cell {2,1}{1,1}(1,1)=

  16. 多質陣列 • 利用多質陣列索引法(cell indexing)來建立多質陣列。 • 此方法為依元素所在之陣列位置來建立元素,且每一個元素是以大括號刮起來。 ‘cell array’ 1234 >>cell(1,1)={'cell array'} ; >>cell(1,2)={ 1234 }; >> cell(1,3)={ [1 2 ; 3 4]}; 1 3 2 4

  17. 多質陣列 • 另一種設定多質陣列的方法為內容索引法(content indexing)。 • 此方法和先前提到的多質索引法相似,只是這種方法是把矩陣的索引值的括號改為大括號。 ‘cell array’ 1234 >> cell {1,1}='cell array'; >>cell {1,2}=1234; >> cell {1,3}=[1 2 ; 3 4] 1 3 2 4

  18. 多質陣列 • 完整顯示多質陣列的元素,可使用以下的函式。 >> cell = {'cell array', 1234 ; [ 1 2 ; 3 4 ] , {[1 2],'str'}} cellplot(cell)

  19. 基本繪圖函數使用 • plot函數使用 x 0 2 4 6 8 ? y 3 1 7 5 2

  20. 基本繪圖函數使用 • plot函數使用 (4,7) x 0 2 4 6 8 Plot(x,y) (8,2) (0,3) y 3 1 7 5 2 (6,5) (2,1)

  21. 基本繪圖函數使用 • 二維重複繪圖 • 畫出多條曲線時,會自動輪換曲線顏色。 • 同常是藍、綠、紅、···。 • >> x = 0:0.1:6 ; • >> plot(x,cos(x),x,sin(x),x,cos(x)+sin(x));

  22. 基本繪圖函數使用 • 修飾plot函數所繪出之圖形

  23. 基本繪圖函數使用 • plot函數控制碼,資料點的顯示符號。

  24. 基本繪圖函數使用 • plot函數控制碼,控制線條樣式

  25. 基本繪圖函數使用 • plot函數控制碼,控制線條顏色

  26. Example • >> x1=1:0.5:6; • >> y1=cos(x1); • >> x2=1:0.5:6; • >> y2=sin(x2); • >> plot(x1 , y1 , '*' , x2 , y2 , 'd') • >> plot(x1 , y1 , '*--' , x2 , y2 , 'd:') • >> plot(x1 , y1 , ' *--m ' , x2 , y2 , 'd:b') • >> plot(x1 , y1,'h--m','MarkerFaceColor','c','MarkerSize',14)

  27. 二維繪圖區域控制 • 設定是否顯示圖形格線與外框 • >> grid on • >> box off

  28. 二維繪圖區域控制 • 設定圖形產生方式與建立一個新的圖形視窗 • 數圖型合併Subplot函數用法

  29. Example • >> x1=1:0.5:6; • >> y1=cos(x1); • >> x2=1:0.5:6; • >> y2=sin(x2); • >> subplot(2,2,1) • >> plot(x1,y1,'-ro') • >> subplot(2,2,2) • >> plot(x2,y2,'-ro')

  30. 二維繪圖區域控制 • 圖形中加入註解以及文字

  31. 二維繪圖區域控制 • 加入圖形標定

  32. Example • >> plot(x1 , y1 , ' *--m ' , x2 , y2 , 'd:b') • >> xlabel('x') • >> ylabel('y') • >> title(‘2012/10/25 Example') • >> legend('cos(x)','sin(x)')

  33. Bit & Byte • 位元(bit) • 是指電腦內部利用電流原理代表資料的動作。 • 通常電流在主機板上有兩種狀態,那便是電流可流過的通路與切斷電流的斷路。 • 若將它數值化,便是1(代表通路)和0(代表斷路)兩種狀態。 • 位元組(byte) • 每個位元組有8個位元。 • 在電腦中,位元組就成為電腦資料中「文字」的基本單位,每個「文字」(包括英文字母、中文字、數字、符號等)都可以用位元組表示。 1 Bit 1 Byte

  34. Bit & Byte • 二進位轉十進位 0 1 2 3 255 計算法: 163 27 26 25 24 23 22 21 20

  35. n-bit的整數型態 • Matlab在n-bit的整數型態

  36. 單精度Single &倍準度Double • 若數值範圍超過該資料型態則會顯示Inf。 • 兩種不同精度在作運算時,會以Single為主 • 非必要,不要將Double轉為Single ,可能會失去一些數字精度。

  37. 影像處理指令 • 基本的儲存、讀取、寫入指令 • save和load是針對MAT 檔案。 • imread和imwrite則是針對影像檔案。

  38. 影像處理指令 prime_list=primes(1000); mag=magic(3); save(‘my_data’, ‘prime_list’, ‘mag’); 將變數存取為my_data clear load(‘my_data’) 載入my_data裡所有的變數 var=load(‘my_data’) 載入my_data裡所有變數並指定給結構陣列之 變數var clear load(‘my_data’, ‘mag’); 載入my_data裡所有指定的變數 m=load(‘my_data’, ‘mag’); 載入my_data裡所指定的變數,並指定 給結構陣列之變數m

  39. Example • >> Lena = Imread('Lena.tiff'); • >> imfinfo(Lena) • >> imshow(Lena) • >> imtool(Lena) • 兩種常用的影像檢視工具,imshow介面是一般通用,imtool則是專門為影像設計,由影像處理工具箱提供。

  40. Example • >> Lena = imread('Lena.tiff'); • >> imshow(Lena); • >> A = Lena(:,:,1); • >> B = Lena(:,:,2); • >> C=Lena(:,:,3); • >> figure; imshow(A); • >> figure; imshow(B); • >> figure; imshow(C);

  41. 影像運算處理 • 數值轉換函式 • 所有的基本資料類別名稱就是一個轉換函數,不過要注意轉換時溢位的問題。 • 注意影像的資料型態轉換imxxx(),會自動處理’溢位’,這裡指的溢位問題是色彩空間的最大值和最小值,須注意適用的場合。

  42. Example • >>Dena = double(Lena); • >>Lena = im2double(Lena); • >>Gena = rgb2gray(Lena); • >> Baboon = im2double(imread('Baboon.tiff')); • >> Jet = im2double(imread('Jet.tiff')); • >>imtool(0.5*Jet + Baboon, [])

  43. 影像運算處理 • 讀取摻雜文字與數據資料的檔案 • 利用textread讀取.txt的檔案。 • >>textread('b01.txt' , '%s')

More Related