Modul 10 Matlab

Embed Size (px)

DESCRIPTION

Matlab tutorial

Citation preview

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 1

    Topik-Topik Khusus Pada bab ini akan dipaparkan mengenai beberapa hal khusus yang belum dibahas pada bab-bab sebelumnya.

    Mencari Akar-Akar Polinomial Polinomial atau suku banyak adalah fungsi yang dinyatakan dengan bentuk:

    di mana adalah koefisien polinomial dan n adalah derajat polinomial. Salah satu permasalahan dalam fungsi polinomial adalah mencari akar-akarnya. Dengan menggunakan fungsi roots pada Matlab, akar-akar polinomial dapat dicari dengan mudah dengan hasil berupa bilangan real atau bilangan kompleks. Adapun bentuk umum fungsi roots adalah:

    di mana c adalah vektor baris yang berisikan koefisien semua suku dan konstanta pada polinomial. Hasilnya akan disimpan dalam bentuk vektor berisi akar-akar polinomial. Contoh berikut akan mengilustrasikan penggunaan fungsi roots untuk mencari akar-akar polinomial berikut:

    Polinomial ini memiliki 1 akar real (-1.5183) dan 2 akar berupa bilangan kompleks.

    Polinomial ini memiliki 1 akar real (0.2990) dan 4 akar berupa bilangan kompleks.

    akar=roots(c)

    >> akar=roots([1 4 1])

    akar =

    -3.73205080756888

    -0.267949192431123

    >>

    >> akar=roots([2 0 0 7])

    akar =

    -1.51829448593783

    0.759147242968916 + 1.314881595248i

    0.759147242968916 - 1.314881595248i

    >>

    >> akar=roots([7 4 -2 8 11 -4])

    akar =

    -1.08072610546697 + 0.484014711572992i

    -1.08072610546697 - 0.484014711572992i

    0.645494419384262 + 0.972673138142547i

    0.645494419384262 - 0.972673138142547i

    0.299034800736844

    >>

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 2

    Konversi String Menjadi Command Matlab Bila sebuah string secara kebetulan kebetulan memuat ekspresi atau perintah yang dapat dikenali Matlab, maka string tersebut dapat dikonversi menjadi perintah Matlab. Konversi string ini dapat dilakukan dengan perintah eval. Berikut adalah contoh penggunaannya: Pada contoh tersebut, string 'A=ones(2,3)' hanyalah sebuah string yang tidak bermakna apa-apa bila diperlakukan hanya sebagai string. Tetapi bila string ini diubah

    menjadi command Matlab dengan perintah eval, maka string ini dapat menghasilkan matriks A sesuai perintah yang terkandung dalam string tersebut.

    Tutorial: GUI Grafik Fungsi Umum Tutorial kali ini membahas mengenai aplikasi untuk menampilkan grafik sembarang fungsi satu variabel . Grafik fungsi boleh dalam bentuk polinomial, rasional, trigonometrik, atau apapun selama kalimat fungsi dapat dikenali Matlab. Untuk melakukannya, kita memanfaatkan perintah eval yang sudah dipelajari sebelumnya. Ketik skrip berikut untuk desain GUI-nya:

    eval(string)

    >> str='A=ones(2,3)'

    str =

    A=ones(2,3)

    >> eval(str)

    A =

    1 1 1

    1 1 1

    >>

    %-------------------------------------------------- %Latihan 1: Membuat GUI: Grafik Sembarang Fungsi %--------------------------------------------------

    clear all; close all; %untuk menutup semua figure Matlab yang aktif clc;

    %warna standar bg_panel=[0.8 0.8 0.8];

    %jendela utama program main=figure('units','points','position',[100 50 630 400],... 'name','Grafik Fungsi','resize','off',... 'color',[0.7 0.7 0.7],'menubar','none');

    %panel data_panel=uipanel('units','points','parent',main,'position',... [10 10 190 380],'title','Input Data',...

    'backgroundcolor',bg_panel); grafik_panel=uipanel('units','points','parent',main,'position',...

    [210 10 410 380],'title','Gambar Grafik',...

    'backgroundcolor',bg_panel);

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 3

    Simpan skrip ini dengan nama gui_grafik_semua.m.

    %axes axes1=axes('parent',grafik_panel,'units','points','position',...

    [30 60 370 320],'xgrid','on','ygrid','on');

    %input data text1=uicontrol('units','points','parent',data_panel,'position',...

    [20 297 80 20],'style','text','string','Awal x:',...

    'backgroundcolor',bg_panel,'fontsize',11,... 'fontweight','bold','horizontalalignment','right'); text2=uicontrol('units','points','parent',data_panel,'position',...

    [20 257 80 20],'style','text','string','Interval:',... 'backgroundcolor',bg_panel,'fontsize',11,'fontweight',...

    'bold','horizontalalignment','right'); text3=uicontrol('units','points','parent',data_panel,'position',...

    [20 217 80 20],'style','text','string','Akhir x:',... 'backgroundcolor',bg_panel,'fontsize',11,...

    'fontweight','bold','horizontalalignment','right'); text4=uicontrol('units','points','parent',data_panel,'position',...

    [15 177 30 20],'style','text','string','f(x) =',...

    'backgroundcolor',bg_panel,'fontsize',11,... 'fontweight','bold','horizontalalignment','right'); text5=uicontrol('units','points','parent',data_panel,'position',...

    [15 157 155 20],'style','text','string','Contoh: x^2+x-1',... 'horizontalalignment','left','backgroundcolor',bg_panel); text6=uicontrol('units','points','parent',data_panel,'position',...

    [15 117 155 40],'style','text','string',...

    'NB: untuk fungsi trigonometrik nilai x dianggap dalam

    radian',... 'horizontalalignment','left','backgroundcolor',bg_panel);

    edit1=uicontrol('units','points','parent',data_panel,'position',...

    [110 300 60 20],'style','edit','string','0',...

    'backgroundcolor',[1 1 1]); edit2=uicontrol('units','points','parent',data_panel,'position',...

    [110 260 60 20],'style','edit','string','0',...

    'backgroundcolor',[1 1 1]); edit3=uicontrol('units','points','parent',data_panel,'position',...

    [110 220 60 20],'style','edit','string','0',...

    'backgroundcolor',[1 1 1]); edit4=uicontrol('units','points','parent',data_panel,'position',...

    [50 180 120 20],'style','edit','string','f(x)',...

    'backgroundcolor',[1 1 1]);

    %control bt_gambar=uicontrol('units','points','parent',grafik_panel,...

    'position',[200 10 80 20],'style','pushbutton','string',...

    'Gambar Grafik','callback','gambar_grafik_all'); bt_reset=uicontrol('units','points','parent',grafik_panel,...

    'position',[300 10 80 20],'style','pushbutton','string',...

    'Reset','callback','reset_grafik');

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 4

    Selanjutnya buatlah 2 skrip callback berikut:

    gambar_grafik_all.m

    reset_grafik.m

    Simpan kedua skrip tersebut dalam folder yang sama dengan file gui_grafik_semua.m. Lalu jalankan program dan lihat hasilnya:

    %-------------------------------------------------- %Latihan 1: Membuat GUI Grafik Sembarang Fungsi %-------------------------------------------------- clc; cla; %clear axes, setiap kali memplot, grafik di-clear dahulu clear 'X' 'Y'; %menghapus variabel X dan Y

    %membuat data x (disimpan dalam vektor X) awal=str2num(get(edit1,'string')); interval=str2num(get(edit2,'string')); akhir=str2num(get(edit3,'string')); X=[awal:interval:akhir];

    %membaca fungsi yang diketik pengguna str=get(edit4,'string');

    %menentukan nilai y=f(x) n_data=length(X); for i=1:n_data x=X(i); eval(['Y(i)=' str ';']); %eksekusi fungsi sesuai string end

    %memplot grafik y=f(x) set(gcf,'currentaxes',axes1); %mengaktifkan axes1

    plot(X,Y,'-b'); grid on;

    xlabel('X'); ylabel('Y');

    %-------------------------------------------------- %Latihan 1: Membuat GUI Grafik Sembarang Fungsi %-------------------------------------------------- clc;

    cla; %clear axes set(edit1,'string','0') set(edit2,'string','0') set(edit3,'string','0') set(edit4,'string','f(x)')

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 5

    Plot grafik fungsi pada selang [-10,10] Penulisan rumus pada kolom f(x): x^5-5*x^4+3*x^3+x^2-8

    Plot grafik fungsi pada selang [-6,6] radian Penulisan rumus pada kolom f(x): sin(3*x)+cos(2*x)-1

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 6

    Plot grafik fungsi

    pada selang [-6,6]

    Penulisan rumus pada kolom f(x): (1+1/x^2)^x

    Dari GUI tersebut terlihat bahwa grafik berbagai macam fungsi dapat dilukiskan di sebelah kanan, asalkan ekspresi fungsi yang dimasukkan sesuai dengan ekspresi yang dikenali oleh Matlab.

    Membaca File dari Sembarang Folder Pada materi yang sudah dipelajari sebelumnya, mengakses file dilakukan dengan mengetik nama file lengkap dengan direktorinya. Namun adakalanya file yang kita inginkan terletak pada direktori yang terpencil sehingga cukup merepotkan seandainya kita harus menghafal dan mengetik nama direktori yang cukup panjang.

    Padahal kita dapat menggunakan perintah uigetfile untuk memunculkan kotak dialog membuka file:

    di mana: nama_file : nama file direktori : direktori file filter : isian format file yang ingin dibuka, misalnya *.jpg, *.txt

    string : Teks yang ingin ditampilkan pada kotak dialog

    [nama_file,direktori]=uigetfile(filter,string);

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 7

    Selanjutnya untuk menggabungkan direktori dan nama file menjadi suatu nama file yang utuh, cukup lakukan proses concatenation. Dengan demikian bila kita hendak me-load suatu file (misal file *txt), kita tidak perlu mengetik nama file lengkap beserta direktorinya secara manual:

    Berikut ini adalah contoh kode penerapannya dalam kasus membaca file teks: Simpan skrip ini dengan nama latihan2.m pada sembarang folder. Lalu jalankan kode tersebut untuk membuka sembarang file *.txt dari sembarang folder:

    file=[direktori nama_file];

    fid=fopen(file,r);

    %-------------------------------------------------- %Latihan 2: Me-load Sembarang File %--------------------------------------------------

    clear all; clc;

    %munculkan kotak dialog file [nama_file,direktori]=uigetfile('*.txt','Latihan Load Data');

    %menggabungkan direktori dan nama file file_lengkap=[direktori nama_file];

    %mulai dari sini, di manapun lokasi file tetap dapat terbaca

    fid=fopen(file_lengkap,'r'); %membuka file string=fgets(fid); %membaca isi file fclose(fid); %menutup file

    disp(string); %menampilkan hasil

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 8

    Hasil pembacaan string adalah: Pada kasus ini, skrip latihan2.m tersimpan di drive C. Sedangkan file yang dibaca (level net

    p202.txt) berada pada drive D. Dengan perintah uigetfile, proses pencarian dan load file menjadi lebih mudah.

    Membaca dan Menampilkan File Gambar Salah satu kemampuan Matlab adalah membaca dan mengolah file gambar. File gambar ini digunakan untuk berbagai keperluan, baik untuk sekedar ditampilkan, maupun dimanipulasi seperti mengubah kontras, kecerahan, dan lain-lain. File gambar dapat dibaca oleh Matlab dengan perintah: File gambar akan dibaca sebagai matriks yang disimpan sebagai suatu variabel. Selanjutnya untuk menampilkan file gambar dilakukan dengan perintah berikut: Perhatikan, nama file gambar pada perintah di atas harus dituliskan lengkap dengan direktori beserta ekstensinya. Berikut ini adalah contoh penerapannya:

    Bila gambar yang dibaca merupakan gambar berwarna, maka variabel data_gambar akan menjadi matriks berukuran m_piksel n_piksel 3. Angka 3 di sini menunjukkan banyaknya kanal pada gambar (red, green, blue). Sedangkan bila gambar yang dibaca berupa gambar grayscale, maka data variabel_gambar hanya berukuran m_piksel n_piksel (gambar grayscale hanya memuat 1 kanal).

    Adjustment of Level Net

    >>

    variabel_gambar=imread(nama_file_gambar);

    imshow(variabel_gambar);

    %-------------------------------------------------- %Latihan 3: Membaca Gambar %--------------------------------------------------

    clear all; clc;

    %munculkan kotak dialog file [nama_gambar,direktori]=uigetfile('*.jpg','Latihan Load Gambar');

    %menggabungkan direktori dan nama file file_gambar=[direktori nama_gambar];

    %membaca gambar data_gambar=imread(file_gambar);

    %menampilkan gambar imshow(data_gambar);

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 9

    Berikut ini adalah hasil run dari contoh kode tersebut:

    (a)

    (b)

    Untuk mengubah gambar berwarna menjadi grayscale, kita dapat menggunakan perintah rgb2gray dengan pola:

    Melanjutkan contoh kode sebelumnya, berikut ini adalah contoh kode penerapannya yang diketik lewat command window (hasil run sebelumnya jangan di-clear):

    gambar_grayscale=rgb2gray(gambar_rgb);

    >> gambar_gray=rgb2gray(data_gambar);

    >> imshow(gambar_gray);

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 10

    Kemudian untuk menampilkan histogram gambar, kita dapat menggunakan perintah

    imhist dengan pola:

    Namun yang perlu diperhatikan adalah perintah imhist hanya dapat membaca satu kanal (grayscale, red, green, atau blue). Oleh karena itu untuk menampilkan histogram citra berwarna hanya dapat dilakukan per kanal. Melanjutkan kode sebelumnya, berikut ini adalah contoh kode penerapan perintah imhist:

    imhist(variabel_gambar);

    >> imhist(gambar_gray);

    >>

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 11

    Sedangkan untuk menampilkan histogram citra berwarna:

    Kanal merah (red)

    Kanal hijau (green)

    >> imhist(data_gambar(:,:,1));

    >>

    >> imhist(data_gambar(:,:,2));

    >>

  • Jurusan Teknik Geomatika Fakultas Teknik Sipil dan Perencanaan Institut Teknologi Sepuluh Nopember Surabaya

    Jurusan Teknik Geomatika | FTSP-ITS | Modul Komputasi Spasial 12

    Kanal biru (blue)

    >> imhist(data_gambar(:,:,3));

    >>