Anda di halaman 1dari 12

Jurusan Teknik Geomatika

Fakultas Teknik Sipil dan Perencanaan


Institut Teknologi Sepuluh Nopember Surabaya

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:
akar=roots(c)

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:

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


akar =
-3.73205080756888
-0.267949192431123
>>

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


akar =
-1.51829448593783
0.759147242968916 +
0.759147242968916 >>

1.314881595248i
1.314881595248i

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

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


akar =
-1.08072610546697 +
-1.08072610546697 0.645494419384262 +
0.645494419384262 0.299034800736844
>>

0.484014711572992i
0.484014711572992i
0.972673138142547i
0.972673138142547i

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

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya

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.
eval(string)

Berikut adalah contoh penggunaannya:


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

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:
%-------------------------------------------------%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 | FTSP-ITS | Modul Komputasi Spasial 2

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
%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');

Simpan skrip ini dengan nama gui_grafik_semua.m.

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
Selanjutnya buatlah 2 skrip callback berikut:
gambar_grafik_all.m
%-------------------------------------------------%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');

reset_grafik.m

%-------------------------------------------------%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)')

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

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya

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 | FTSP-ITS | Modul Komputasi Spasial 5

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya

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:
[nama_file,direktori]=uigetfile(filter,string);

di mana:
nama_file
direktori
filter
string

:
:
:
:

nama file
direktori file
isian format file yang ingin dibuka, misalnya *.jpg, *.txt
Teks yang ingin ditampilkan pada kotak dialog

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
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:
file=[direktori nama_file];
fid=fopen(file,r);

Berikut ini adalah contoh kode penerapannya dalam kasus membaca file teks:
%-------------------------------------------------%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

Simpan skrip ini dengan nama latihan2.m pada sembarang folder. Lalu jalankan kode
tersebut untuk membuka sembarang file *.txt dari sembarang folder:

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
Hasil pembacaan string adalah:
Adjustment of Level Net
>>

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:
variabel_gambar=imread(nama_file_gambar);

File gambar akan dibaca sebagai matriks yang disimpan sebagai suatu variabel. Selanjutnya
untuk menampilkan file gambar dilakukan dengan perintah berikut:
imshow(variabel_gambar);

Perhatikan, nama file gambar pada perintah di atas harus dituliskan lengkap dengan
direktori beserta ekstensinya. Berikut ini adalah contoh penerapannya:
%-------------------------------------------------%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);

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).

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
Berikut ini adalah hasil run dari contoh kode tersebut:

(a)

(b)
Untuk mengubah gambar berwarna menjadi grayscale, kita dapat menggunakan perintah
rgb2gray dengan pola:
gambar_grayscale=rgb2gray(gambar_rgb);

Melanjutkan contoh kode sebelumnya, berikut ini adalah contoh kode penerapannya yang
diketik lewat command window (hasil run sebelumnya jangan di-clear):
>> gambar_gray=rgb2gray(data_gambar);
>> imshow(gambar_gray);

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya

Kemudian untuk menampilkan histogram gambar, kita dapat menggunakan perintah


imhist dengan pola:
imhist(variabel_gambar);

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(gambar_gray);
>>

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya
Sedangkan untuk menampilkan histogram citra berwarna:
Kanal merah (red)
>> imhist(data_gambar(:,:,1));
>>

Kanal hijau (green)

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

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

Jurusan Teknik Geomatika


Fakultas Teknik Sipil dan Perencanaan
Institut Teknologi Sepuluh Nopember Surabaya

Kanal biru (blue)

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

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

Anda mungkin juga menyukai