Scilab – Matlab Versi Gratis

Matlab yang merupakan perkembangan lebih lanjut dari bahasa komputasi Fortran mulai banyak diminati oleh peneliti karena kemudahannya. Akan tetapi karena harga lisensinya yang mahal, membuat beberapa penggemar open source merakit bahasa yang memiliki struktur bahasa yang serupa dengan matlab, salah satunya adalah Scilab.

Selain Scilab, dijumpai juga Octave yang telah banyak dimanfaatkan khalayak untuk melakukan perhitungan dengan biaya nol, alias gratis. Cara pembuatan matrix dan pengoperasian fungsi aritmatika juga tidak jauh berbeda.

Tampilannya mirip matlab tetapi sederhana, tanpa adanya toolbox-toolbox. Bagaimana untuk programmingnya? Ternyata ribet juga, karena sintax yang beda banget sama matlab. File extensi untuk programmingnya pun *.sci berbeda dengan matlab yang *.m. Okelah, coba yang lain.

Memahami Function Matlab

Kalo kita searching internet, bidang informatika ternyata banyak cabangnya dari yang cenderung ke hardware hingga yang cenderung ke software. Jika kita menjumpai seseorang dengan gelar S.Kom kita tidak bisa memastikan yang bersangkutan bisa mengutak-atik jaringan, merancang software, atau bidang-bidang spesifik lainnya. Apalagi jika gelarnya M.Kom atau Ph.D lebih spesifik lagi bidangnya.

Beberapa peneliti ingin mengetahui atau membandingkan dua jenis metode, tentu saja dengan alat ukur yang adil, dimana tidak membandingkan dua metode dengan dua bahasa yang berbeda. Oiya, beberapa literatur membedakan metode dengan algoritma, walaupun ada juga yang menganggapnya sama. Untuk memperbaiki kinerja suatu metode, beberapa peneliti menggunakan bahasa yang mudah, yaitu Matlab. Bahasa ini sulit dibeli oleh individu, dan biasanya institusi yang membelinya karena mahal. Belum lagi kontroversi dari sisi pendidikan dimana Matlab dituduh tidak melatih siswa untuk sungguh-sungguh belajar programming. Banyak pertanyaan-pertanyaan muncul mengenai kode bahasa matlab yang kebanyakan dalam bentuk function dan toolbox.

Berbeda dengan toolbox lain seperti WEKA, SPSS, dan sejenisnya yang melakukan proses data mining dengan menyembunyikan source code, Matlab sebenarnya menunjukan kode yang digunakannya. Jadi jika kita diminta menelusuri algoritmnya, tinggal buka saja M-file yang digunakan. Misalnya kita akan mengkluster dengan Fuzzy C-Means (FCM), secara sederhana kita dapat mencari kluster secara langsung baik lewat GUI atau function. Coba buka kode yang ada dengan mengetik edit fcm di command window. Jika muncul pesan, klik saja Yes.

Untuk bisa membaca kode tersebut, sedikit diperlukan “usaha”. Apalagi jika belum pernah sekalipun belajar bahasa pemrograman. Jika tidak pernah, maka yang disalahkan adalah institusi tempat mahasiswa belajar informatika, karena salah satu dasar seluruh jenis kurikulum informatika (TI, SI, SK, ILKOM) pasti belajar dasar-dasar pemrograman. Di tulisan yang lalu, saya menyinggung fungsi objective FCM. Nah dimanakah letak fungsi objective itu di function matlab?

Jika Anda teliti ternyata fungsi fcm memanggil fungsi stepfcm, maka buka lagi fungsi tersebut dengan mengetik edit stepfcm. Di situ dengan jelas fungsi yang dalam bentuk matematisnya adalah sigma.

Ternyata ada juga fungsi distfcm, ok. Buka saja dan pelajari lagi. Dan untungnya kita tidak terlalu pusing-pusing menerjemahkan karena ada baris komentar yang diawali dengan simbol % yang fungsinya menjelaskan satu line code.

Jika Anda ingin membuat dalam bahasa pemrograman open source, bisa menerapkannya di octave, scilab, dan sejenisnya yang dapat diunduh gratis dari internet. Ok, semoga bermanfaat.

Prediksi dengan Matlab

Prediksi adalah memperikiran hasil yang akan datang berdasarkan kondisi terkini. Biasanya dipergunakan untuk memperkirakan kejadian di waktu yang akan datang, misalnya harga saham, bencana, dan sebagainya. Terkadang kita memprediksi dari rentetan beberapa data seperti harga saham, komposisi kimia dan sebagainya. Untuk matlab terbaru sudah tersedia fasilitas GUI, tetapi versi yang lama dapat menggunakan toolbox neural network fitting tool.

Sebagai contoh time series dari 12 data, kita akan melatih NNs dengan data tersebit dimana dua kolom pertama sebagai data training dan satu kolom terakhir sebagai target (t+1). Buka GUI NNs Fitting Tool lewat jendela start atau dengan mengetik nftool di command window.

Sebelumnya masukan terlebih dahulu data dan targetnya di workspace karena akan kita gunakan nanti. Klik Next dilanjutkan dengan memasukan data dan target. Pastikan tombol Next muncul, jika tidak arahkan option button di rows.

Tambahkan Hidden Neuron seoptimal mungkin, di sini saya menggunakan nilai default yang tidak terlalu banyak, 20. Teruskan hingga proses pelatihan dan jangan lupa menyimpan hasilnya.

Terus saja menekan Next hingga proses pelatihan selesai. Jangan lupa menyimpan hasil pelatihan, misalnya net1. Setelah itu ujilah dengan menjalankan hasil pelatihan NNs tersebut. Untuk menguji hasil training, simulasikan saja net1 dengan data pelatihan.

Sepertinya ada empat data yang error dari 12 data yang dilatih. Perbaiki dengan menambah hidden neuron dan jumlah data untuk pelatihan. Untuk memprediksi, masukan dua data berurutan untuk mengetahui data prediksinya, misalnya [18980 18990] yang akan menghasilkan.

Cek, apakah benar perkiraan ketiga 19032? Waulahu a’lam, namanya saja prediksi.

Mapping Toolbox Matlab (Membuka Shape file ArcView)

Pada Matlab yang telah kita install tersedia file contoh untuk memanipulasi peta yang terletak di folder \toolbox\map\mapdemos\. Buka mapviewer, untuk jelasnya lihat tulisan saya sebelumnya.

A. Mengimpor Raster Data

Raster data adalah data yang berupa pixel (berwarna atau hitam putih), atau gampangnya data gambar. Klik fileImport from file yang dilanjutkan dengan memilih file boston.tif yang berada di folder tersebut di atas. Tampak peta boston pada jendela mapview. Cukup mudah dan praktis bahkan dibanding membuka lewat arcview itu sendiri.

Untuk mengetahui skalanya, mudah saja, isi Map units dengan pilihan US Survey Feet, maka skala akan muncul dengan sendirinya. Yang menarik, skala ini akan otomatis berubah ketika kita melakukan proses zooming pada mapview dengan cara schrolling mouse kita.

B. Mengimpor Data Vektor

Data vektor adalah data yang berupa titik, garis, atau poligon yang dibuat secara matematis (lewat arcview, autocad, corel draw, dll). Untuk contoh kasus yang tersedia datanya di matlab adalah jalan-jalan yang ada di boston.

boston_roads = shaperead(‘boston_roads.shp’);

Perintah di atas membaca shapefile yang berisi koordinat jalan di boston. Hasilnya adalah data yang oleh mapviewer dikenal dengan nama ‘geographic data structure’. Terlebih dahulu konversi dari meter menjadi US survey feet. Gunakan fungsi unitsratio. Karena yang harus dikonversi adalah seluruh jalan di boston dari meter ke feet maka perlu iterasi untuk seluruh elemen boston_roads.

  • surveyFeetPerMeter = unitsratio(‘survey feet’,’meter’);
  • for k=1:numel(boston_roads)
  • boston_roads(k).X=surveyFeetPerMeter * boston_roads(k).X;
  • boston_roads(k).Y=surveyFeetPerMeter * boston_roads(k).Y;
  • end

Mengapa ini perlu dilakukan? Karena jika satuan tidak sama tentu saja boston_roads tidak akan matching dengan gambar/image boston. Coba sendiri sampai menghasilkan peta sebagai berikut:

 

 

Mapping Toolbox Matlab

Sesuai dengan namanya, mapping berarti berhubungan dengan peta. Salah satu aspek penting dari peta adalah spatial data, yaitu data yang berhubungan dengan lokasi/koordinat. Untuk mengelola data non spasial, selama ini matlab sanggup mengatasinya, namun bagaimana dengan data spatial? Sebenarnya ada satu lagi jenis data yang agak rumit yaitu spatio-temporal, dimana selain berkaitan dengan koordinat, juga dengan waktu (time). Tetapi untuk time, tidak terlalu masalah, hanya saja spatial yang menjadi pokok permasalahan kita saat ini.

Untuk membuka mapping toolbox dapat diakses dengan menekan starttoolboxesMapping dan pilih toolbox untuk mengelola file map yang biasanya diimpor dari ArcGIS. Atau kalau mau lebih cepat ketik mapview di command window.

Untuk mempelajari toolbox ini lebih dalam ada baiknya Anda membaca menu help dari Matlab. Kalau ingin lebih nyaman bacanya bisa download versi pdf dari help tersebut, tentu saja setelah terkoneksi ke internet. Di bagian bawah klik saja Mapping Toolbox User’s Guide di akhir help.

Maka Anda akan mendownload dari situs mathworks tentang mapping toolbox yang besarnya puluhan Mb. Berikut saya coba untuk mengimport shapefile dari ArcView. Shapefile adalah file dari ESRI tentang data spatial suatu region. Klik dari menu Import from file dan cari shapefile yang Anda miliki.

Gambar di atas adalah peta wilayah Sakhon Nakhon di provinsi Khong Kaen Thailand. Koordinat serta peta wilayah dengan batas-batasnya terlihat dengan jelas. Bahkan layer ikut terimpor ke dalam Matlab, tinggal kita mengolah lebih lanjut dengan toolbox lain di Matlab seperti Algoritma Genetik, Neural Netwok dan lain-lain sesuai dengan kebutuhan. Lanjut ke Import Raster dan Vector Data.

Bersahabat dengan Sigma

Bagi orang-orang ilmu komputer simbol sigma (∑) sudah menjadi santapan sehari-hari. Mau dihindari, tapi selalu ketemu. Apa boleh buat, terpaksa ditelan bulat-bulat. Simbol ini sebenarnya mempersingkat bahasa kita yang artinya “jumlah”. Tetapi kebiasaan pengajar di Indonesia yang suka melihat mahasiswanya pusing, malah menakut-nakuti. Perhatikan fungsi objektif yang harus diselesaikan oleh Fuzzy-CMeans clustering, dibikin gampang ya gampang, dibikin susah ya susah aja:

(1)

Misalnya tukang ojek kerja dari hari senin sampai kamis (i=[1;4];), dengan penghasilan pada hari senin, selasa, rabu, kamis, berturut-turut 50, 70, 80, 100 ribu. Kalau dibuat tabelnya di matlab:

Misalnya ada rumusan seperti ini:

(2)

Dimana Y= total setoran, i= hari ke-i, dan xi = setoran hari ke-i. Kan sama saja dengan pernyataan “setoran lue dari hari senin sampai hari kemis berape?”. Tukang ojek-nya terus buka Matlab:

Ketemu hasilnya 300 ribu. Tentu saja bukan hanya untuk tukang ojek, bisa juga untuk dosen yang nyambi sana nyambi sini. Dari SD kita memang sudah dikenalkan dengan tabel dan saat kuliah sudah terbiasa dengan yang namanya Excel (spreed sheet) untuk mengolah data. Tetapi untuk ilmu komputer yang terkadang excelnya aja tidak bisa mengimport data yang saking besarnya, pemahaman tentang penyakit sigma menjadi wajib. Coba saja download dan import ke excel yg ukurannya di atas 1 Gb data di www.kaggle.com.

(3)

Apalagi nih? Misalnya, karena motornya ditarik akibat beberapa bulan jadi buronan dealer, si tukang ojek jualan di kampung oncom tiga jenis gorengan, oncom, misro, combro. Supaya gampang nulisnya j1, j2, j3. Seperti biasa dia dagang empat hari, senin sampai kamis dan lagi-lagi supaya gampang i1,..,i4. Tiap hari dicatet keuntungan tiap gorengan per hari (dalam ribuan):

Mungkin karena nama kampungnya kampung “oncom”, makanya oncom lebih laris. Kemudian di hari kamis pas mau tutup, satpol pp menghampiri dan minta 10% untuk pajak. Jadi harus dihitung dulu penghasilannya dari hari senin, kembali dia buka Matlab:

Ketemu hasilnya, total = 99 ribu. Kasih dah ke satpol PP pajak 10% = 5 ribu …. karena ngakunya cuma dapet 50 ribu. Sekian dulu tulisan hiburan akibat baca2 jurnal yg ada rumusan kayak begini:

Objective Function

Learning Vector Quantization (LVQ)

LVQ is another kind of competitive network that uses competitive and linear layer together (see past posting for competitive network). The winning neuron of the first stage is become a subclass. Then the second layer combines it into a single class. Many researcher use this kind network for signature identification.

The learning of LVQ is supervised learning. It needs a target as a basis of learning process. Use this script (LEARNING VECTOR QUANTIZATION) to practice your matlab skill in creating a LVQ network. Try to understand the syntax of lvq function by typing “help newlvq” on command window.

The above picture shows matlab respons to our train script function. You can see the IW and LW part of LVQ network using this script.

>> samplelvq.iw{1,1}

ans =

-0.1259 -0.0280

0.0862 0.1584

-0.0351 0.0306

>> samplelvq.lw{2,1}

ans =

1 1 0

0 0 1

Competitive Network

Competitive network uses Hamming Network which is contained feedforward and recurrent layer.

Open your Matlab and try this lab example. Just copy and paste to see how this kind of network worked. Newc is a function from matlab to create a competitive network. Use this Competitive Network file for practise.

Try to train a competitive network. After training the network, try to simulate the trained network to find the result from a sample input.

This is a result from simulation of samplec on Pc. Type on command window “help newc” to study the syntax of newc function from your Matlab.

>> Yc1 = sim(samplec, Pc)

Yc1 =

(2,1) 1

(2,2) 1

(2,3) 1

(1,4) 1

(1,5) 1

(1,6) 1

Menghitung Determinan dan Invers Matriks 4×4 – Bag 2

Postingan yang lalu kita menghitung matriks 4×4 dengan metode sarrus yang sedikit ribet. Sekarang kita coba dengan menggunakan metode operasi baris dan kolom yang sedikit “logis”. Kita terapkan metode ini untuk matriks 4×4 setelah pada postingan yang lalu kita gunakan untuk matriks 2×2 dan 3×3. Buat M-File baru, cara gampangnya ketik aja di Command Window “edit segitiga” yang akan membuka editor di M-File editor dengan nama segitiga.m, dan jangan khawatir jika Matlab menanyakan bahwa Script segitiga tidak ada (karena memang ingin kita buat), lanjutkan saja dengan menekan OK.

Baris kedua membuat matriks berangkai yang tadinya 4×4 menjadi 4×8 karena kita akan menggunakan prinsip x = [I][inv(x)]. Pada line 4 sampai 9 kode di atas adalah membuat segitiga atas, dilanjutkan dengan segitiga bawah. Segitiga atas menghasilkan nol di bawah diagonal, sebaliknya segitiga bawah menhasilkan nol di atas diagonal. Hasilnya adalah nol selain di diagonal yang kemudian pada line 18 hingga 21 menghailkan matriks diagonal satuan (seluruh diagonal bernilai satu). Uji coba dengan command window dengan memasukan bilangan random 4×4 yang akan dicari inversnya.

Dilanjutkan dengan menjalankan M-file yang baru saja kita buat.

Cek dengan menggunakan fungsi INV di Matlab apakah sama dengan hasil di atas? Jika sama berarti kode Anda benar, Oiya, gunakan kondisi jika kebetulan Matriks yang akan dicari inversnya tidak memiliki invers (determinannya nol) .. Selamat Mencoba!

Mempelajari GUI di Matlab

Apa itu Matlab?

Matlab merupakan bahasa komputasi terkenal dan banyak dipakai oleh mahasiswa atau periset yang ingin membuat suatu prototipe dengan algoritma baru. Terkadang aplikasi ini dijadikan alat ukur yang cukup adil terhadap dua metode, karena tidak bisa kita membandingkan metode tertentu yang dibuat dengan C++ dan metode lain yang dibuat dengan bahasa yang lain misalnya Java. Terkadang yang unggul adalah C++ terlepas dari metode yang dipakai karena memang jenis bahasanya yang lebih cepat.

Beberapa institusi melarang mahasiswanya menggunakan Matlab yang katanya terkesan tinggal pakai saja (toolbox-toolboxnya). Ketika orang ilmu komputer menjauhi Matlab, ternyata bidang lain malah mendekati. Tak dapat dipungkiri Matlab merupakan salah satu aplikasi yang justru mendekatkan ilmu komputer yang sebelumnya terkesan eksklusif menjadi terbuka terhadap cabang ilmu yang lain. Bahkan saat ini multi disiplin ilmu sedang giat-giatnya dijalankan. Jika dikatakan Matlab tidak opensource, ternyata ada bahasa setara dengan matlab yang open source juga seperti scilab, octave, dan sebagainya.

Beberapa tahun yang lalu Matlab masih sekedar alat bantu menghitung dengan sifat matriksnya yang memang cocok untuk operasi matematis. Tetapi karena kesulitan dalam penggunaannya, Matlab menambahkan Graphic User Interface (GUI) seperti bahasa pemrograman visual yang lain sehingga bisa dibuat menjadi program tersendiri dimana sebelumnya masih mengandalkan pemrograman visual lainnya seperti VB, Delphi, dan lain-lain.

Belajar GUI dengan Mudah

Untuk rekan-rekan yang bingung prinsip kerja GUI berikut teknik dasar belajar GUI tanpa buku. Sebenarnya ketika belum banyak buku Matlab yang dijual, para mahasiswa mempelajari GUI lewat Matlab sendiri. Buka Matlab dan ketik ‘guide’ di comman window.

Jika Anda sudah mahir, maka langsung aja memilih “Blank GUI (Default)”. Tetapi di sini kita mau belajar, maka paling dasar adalah kita memilih “GUI with Uicontrols”. Di sini Anda akan diberikan contoh program visual bagaimana menangkap masukan, melakukan komputasi, dan mengeluarkan hasil di kolom keluaran.

Pilih, dan klik OK, sehingga Matlab memunculkan GUI contoh dimana kita akan menghitung Massa benda berdasarkan masukan kerapatan dan volume. Lalu di mana kita mengetikkan programnya? Mudah saja, pertama – tama tekan tombol RUN (Ctrl-T) atau tombol segitiga berwarna hijau. Maka Matlab akan meminta anda memberi nama aplikasi yang baru saja dibuat. Beri nama, misalnya latihan, maka program siap dijalankan.

Tampak jika kita beri masukan Density sebesar dua dan volume tiga, diperolah massa 2×3 =6. Sederhana tetapi ini merupakan dasar GUI yang sederhana dimana Matlab menerima masukan, memproses dan menampilkan output. Di mana letak programnya? Mudah saja, di GUI desainer sebelumnya tekan tombol M-file editor dengan icon pulpen dan kertas. Maka Anda akan ditampilkan listing programnya.

Perhatikan listing di atas, baris ke 98 sampai 106 adalah teknik menangkap variabel density di tombol isian density di GUI. Baris 105 dan 106 adalah instruksi wajib agar density dapat dihitung di fungsi yang lain selain fungsi density (di GUI ditambah kata _Callback). Jika fungsi yang ada di Matlab cukup banyak (jumlah fungsi berdasarkan tombol yang Anda pasang di GUI) maka Anda membutuhkan bantuan f() yang dapat Anda klik dan langsung mengarahkan ke lokasi fungsi yang dituju.

Coba arahkan ke fungsi calculate_Callback yang akan menghitung massa. Tampak fungsi berikut ini, perhatikan di sini kita tidak mengalikan density dengan volume melainkan menambahkan awalan “handles”. Mengapa? Jawabannya karena density dan volume digunakan di fungsi lain, maka harus ditambah handles. Sebenarnya jika ingin mudah, kita tidak perlu membuat sub objek (metricdata). Bisa saja langsung dengan handles.density saja jika di awal kita tidak memerlukan metric data. Jika Anda berhasil membuat aplikasi sederhana seperti ini lewat pilihan GUI pertama (Blank GUI) maka Anda sudah dapat dikatakan mampu membuat GUI. Selamat mencoba. Cara membuat GUI dengan loading file tertentu bisa di lihat di postingan sebelumnya.

mass = handles.metricdata.density * handles.metricdata.volume;

set(handles.mass, ‘String’, mass);

Membuat GUI di Matlab Sederhana untuk Loading *.MAT

Untuk mempraktekan dengan sederhana fungsi Load yang memanggil file berekstensi *.MAT yang telah kita simpan sebelumnya ada baiknya kita buat terlebih dahulu versi sederhananya di Command Window. Misal kita mempunya data berikut ini, sebuah matriks yang nanti akan kita tampilkan di GUI berupa gambar.

Simpan dengan nama data. Cara menyimpan sudah bisa kan? Baca tulisan yang lalu. Misal beri nama “data”.

save data

Nantinya akan kita tampilkan di GUI jika dijalankan akan menghasilkan gambar sebagai berikut, dengan perintah imshow(data).

Berikutnya rancang GUI sederhana sebagai berikut, ikuti cara-cara yang telah sampaikan di postingan sebelumnya (ketik guide, buat tombol txt dan edit text, tempat grafik, dan seterusnya).

Ganti/Edit tulisan yang muncul secara default sesuai dengan bahasa dan keinginan Anda. Di sini saya tetap menggunakan variabel dan nama “String” bawaan Matlab (supaya cepet ajah). Buka M-file yang digenerate secara otomatis, dan isi function di pushbutton1_Callback, isi dengan kode berikut ini (sengaja gambar karena banyak complain di copas ga jalan krn petik satu berubah kalo di blog):

Line 82 dan 83 mengambil data *.mat dilanjutkan dengan membuka data yang ada dan baris 86 dan 87 agar bisa digunakan di fungsi lain, yaitu misalnya menampilkan gambarnya. Arahkan ke fungsi pushbutton2_Callback, isi:

Jalankan dan ambil file berekstensi mat yang telah kita simpan sebelumnya, hasilnya harus seperti berikut ini. Selamat mencoba!

Untuk mempelajari dasar-dasarnya bisa lihat postingan ini.

Georeferencing dengan Matlab – bagian 2

Untuk memastikan bahwa hasil Georeferencing kita sesuai dengan koordinat latitude dan longitude, kita bandingkan hasil optimasi dengan google map. Pertama-tama buat koneksi dengan database WebGIS, misalnya dengan nama ODBC ‘aphb’. Lihat cara-cara buat ODBC di postingan yang lalu.

Di baris 131 dan 132 diperoleh titik optimum yang berhasil dihitung dengan algoritma genetik. Selanjutnya di baris 133 dikonversi menjadi koordinat global latitude dan longitude yang akan dikirim ke database postgreSQL. Baris 135 membuat koneksi yang dilanjutkan dengan mempersiapkan lokasi field yang akan di-insert. Terakhir di baris 140 dilakukan proses inserting ke database.

Perhatikan hasil running optimasi di DesktopGIS dengan Algoritma Genetik, diperoleh beberapa titik optimum. Di sini kita baru mengkonversi satu titik optimum karena belum diketahui akurasinya. Jika sudah akurat, baru diterapkan di seluruh titik optimum.

Di sini diperlukan kejelian mata untuk mengarahkan lokasi google map dengan lokasi di DesktopGIS. Setelah itu diketahui akurasinya. Perhatikan gambar di bawah, tampak titik di google map sedikit meleset dari lokasi optimum hasil hitungan di desktopGIS dan ini harus diperbaiki dengan mengeset kembali fungsi konversi.

Jika diperhatikan, sepertinya base latitude dan longitude terlalu jauh sehingga harus digeser kekiri dan ke bawah agar tepat di lokasi yang ditunjukkan oleh panah merah di atas. Lihat video di bawah ini untuk lebih jelasnya:

Ok .. done.

Georeferencing dengan Matlab – Bagian 1

Georeferencing adalah mensinkronkan antara koordinat lokal peta kita dengan koordinat global berdasarkan posisi lintang dan bujur. Untuk mengetahui teknik ini dengan menggunakan ArcView dapat Anda lihat pada postingan saya sebelumnya, Gereference and GPS. Misalkan untuk wilayah Cibitung dalam desktop GIS akan disetarakan dengan web GIS, kita perlu menentukan basis untuk longitude dan latitude serta ujung-ujung sepanjang longitude dan latitude. Longitude adalah garis bujur sedangkan latitude adalah garis lintang.

Kemudian buka google map, dan cari letak basis latitude dan longitude. Dari jangkauan maksimum dan basis bisa diketahui selisih panjang latitude dan longitude sebagai offset pada perhitungan konversi koordinat.

Setelah itu temukan panjang longitude dan latitude dengan mengurangkan selisihnya untuk melakukan konversi dari koordinat lokal ke global. Koordinat longitude dan latitude untuk pojok kanan bawah berturut turut adalah -6.240022 dan 107.18554 Berikut ini salah satu contoh listing untuk satu region.

function [latitude,longitude]=konversi(y,x)

latbase=-6.152484;

longbase=107.068653;

deltalat=latbase+6.240022;

deltalong=107.18554-longbase;

latitude=latbase-((y/500)*deltalat);

longitude=(x/700)*deltalong+longbase;

end

Sedikit modifikasi karena lokasi koordinat dalam matlab (image) agak berbeda dengan koordinat kartesian karena positf pada matlab (image) berarah ke bawah (dalam kartesian ordinat (y) negatif sehingga pada persamaan latitude di fungsi di atas berbeda dengan longitude yang langsung dijumlahkan antara longbase dengan offset-nya. Berikutnya kita uji dengan koordinat basis, misalnya (0,0).

>> [lat,long]=konversi(0,0)

lat =

-6.1525

long =

107.0687

Uji hasilnya dengan membandingkan antara lokasi di desktop GIS dengan web GIS, jika masih kurang tepat, lakukan modifikasi di basis latitude dan basis longitude. Masukan titik ( -6.1525, 107.0687 ) secara manual di Web GIS dan cek hasilnya apakah sudah tepat apa belum. Hidupkan server Ruby on Rails (RoR) yang telah dibuat pada program web GIS.

Kemudian cek dengan memasukan koordinatnya, apakah sudah tepat apa belum. Kapan-kapan akan kita bahas cara membuat WebGIS dengan RoR. Sebenarnya bisa kita cek langsung dengan memasukan koordinat di google, lihat postingan saya sebelumnya tentang memanggil WebGIS dengan Matlab tanpa server RoR.

Delete SQL dengan Matlab

Mudah-mudahan mas yang menanyakan masalah DELETE data dengan Matlab sudah menemukan jawaban. Kalau belum, semoga postingan ini bermanfaat.

Berbeda dengan instruksi INSERT dan SELECT yang memasukkan data dan menampilkannya, instruksi DELETE harus didefinisikan dengan jelas record yang akan didelete. Untuk instruksi INSERT dan SELECT telah diuraikan pada postingan saya yang lalu ‘Koneksi Matlab dengan Sistem Basis Data‘. Berikutnya kita coba dengan instruksi DELETE.

Pastikan Anda sudah mengkoneksikan ODBC dengan tabel yang berisi X, dan Y yang berisi bilangan numerik.

Jika masih kosong, tambahkan tabel tersebut dengan instruksi ini:

>> insert(Conn,’lokasi’,data,[1,3])

>> insert(Conn,’lokasi’,data,[1,4])

>> insert(Conn,’lokasi’,data,[2,4])

>> insert(Conn,’lokasi’,data,[3,4])

>> Results=fetch(Conn,’select * from lokasi’)

Results =

[1] [3]

[1] [4]

[2] [4]

[3] [4]

Saya menggunakan tabel ini untuk menyimpan koordinat longitude dan latitude suatu lokasi. Dengan instruksi SELECT diketahui data sebagai berikut:

Database membutuhkan lokasi mana yang ingin dihapus. Misal kita ingin menghapus data pada tabel lokasi yang memiliki field x = 1, maka kita membutuhkan instruksi SQL Query ini:

>> deleteQuery = [‘delete from ‘,Conn.Instance,’ where’,’ x’,’ =’,’1′,’;’];

Dilanjutkan dengan mengeksekusinya:

>> hapus=exec(Conn,deleteQuery);

Jika Anda melihat isi dari lokasi diperoleh data bahwa seluruh record dengan field x =1 hilang.

>> Results=fetch(Conn,’select * from lokasi’)

Results =

[2] [4]

[3] [4]

Bagaimana jika field y yang dihapus? Mudah saja ganti saja ‘x’ dengan ‘y’, misal y=4 akan dihapus.

>> deleteQuery = [‘delete from ‘,Conn.Instance,’ where’,’ y’,’ =’,’4′,’;’];

Dilanjutkan dengan mengeksekusinya:

>> hapus=exec(Conn,deleteQuery);

>> Results=fetch(Conn,’select * from lokasi’)

Results =

[]

Tampak data dengan y=4 terhapus. Bagaimana jika ingin mengosongkan seluruh isi tabel? Gunakan Query: DELETE FROM <nama_tabel>;

 

 

Konversi Scope ke Figure-2

Sambungan dari postingan dua tahun yang lalu (https://rahmadya.com/2012/04/12/konversi-scope-ke-figure-pada-matlab/). Berikut ini akan saya coba merubah scope yang tampilannya tidak bagus untuk dicetak menjadi figure yang lebih nyaman, terutama dari sisi penggunaan tinta printer. Maklum background scope yang hitam membuat tinta printer cepat habis. Selain itu figure sangat mudah untuk dimanipulasi seperti menambahkan garis panah yang menjelaskan suatu lengkung kurva, dan sebagainya.

Gambar di atas adalah salah satu contoh yang akan kita buat figure-nya. Jika dijalankan dan menekan dobel scope bernama Grafik2 (panah ungu) Anda akan melihat grafik berikut ini (contoh kasus perbandingan beberapa model lewat mekanisme multiplexing):

Tampak grafik yang mirip tampilan alat ukur listrik. Sebenarnya ketika kita menjalankan model, Matlab dapat merekam hasilnya jika kita melakukan inisiasi pada scope. Pada gambar di atas coba Anda klik icon parameters. Tekan tab “Data history“.

Centang “Save data to workspace” agar setiap model di-running akan menyimpan hasilnya dari variabel “keluaran“, dengan format “Array“. Jika Anda tidak percaya, setelah di running, Lihat Matlab, Anda akan menemukan satu variabel baru yang muncul di workspace (jendela ini secara default terletak di pojok kanan, kalo belum diutak-atik).

Sebenarnya tugas sudah selesai, karena Matlab sudah menyediakan matrix keluaran yang berisi data yang merepresentasikan grafik pada scope. Coba saja anda ketik pada command window> keluaran.

Tampak enam kolom yang merepresentasikan garis pada scope. Yang mana saja? Tentu saja yang membuat model yang tahu. Perbandingan dari gabungan beberapa kontroler memang sulit membedakan, tapi jika kita sudah tahu jenis keluaran di satu kontroler, untuk perbandingan pasti tahu dong. Tapi kalau dilihat sepintas, kolom pertama itu time (waktu), kolom kedua itu pasti yang berwarna kuning (karena konstant 25). Coba kita buat grafik antara kolom satu dengan kolom dua terlebih dahulu:

>plot(keluaran(:,1),keluaran(:,2))

Apaan tuh? Jangan bingung. Jika kita akan membuat plot sumbu horizontal, x, dengan sumbu vertikal, y, maka formatnya adalah plot(x,y). Tapi di sini sumbu horizontal-nya keluaran(:,1), maksudnya adalah seluruh baris kolom ke-1. Begitu juga keluaran(:,2) artinya seluruh baris kolom kedua. Hasilnya adalah sebagai berikut.

Lanjutkan dengan membuat plot dari kolom kesatu dengan ketiga, keempat, dan seterusnya hingga keenam. Eiit.. jangan lupa mengetik hold, agar gambar sebelumnya tidak terhapus.

>hold

>plot(keluaran(:,1),keluaran(:,3)

>plot(keluaran(:,1),keluaran(:,4)

Terus hingga muncul hasil sebagai berikut. (Note: Tidak perlu diketik semua, cukup tekan panah atas di keyboard dan edit angka terakhirnya).

Kok ada tulisannya .. Ah itu gampang, tinggal insert – Text Arrows aja dan arahkan ke kurva yang akan anda rinci, termasuk x-label dan y-labelnya.