Sanggupkah ANFIS Mengenali Pola Gambar?

[m.kul/ruang/dosen:pengenalan-pola/software/rahmadya]    

Adaptive Neuro-Fuzzy Inference System (ANFIS) merupakan gabungan Jaringan Syaraf Tiruan (JST) dengan Fuzzy Inference System (FIS). Cara kerja neuron pada JST (lihat JST sederhana) lebih sederhana dibanding dengan ANFIS (lihat post dasar2 ANFIS). Pada ANFIS jumlah neuron harus mengikuti jumlah masukan dan fungsi keanggotaan (membership function) tiap masukan. Selain itu tiap bilangan numerik (crisp) masukan harus dikonversi menjadi fuzzy sets. Akibatnya butuh proses komputasi dibanding JST yang langsung meneruskan masukan numerik ke pembobotan di neuron.

Kasus Citra Hitam-Putih

Citra hitam-putih (B/W) hanya mengenal dua angka yaitu 1 dan nol yang merepresentasikan citra (beberapa peneliti menganjurkan dengan 1 dan -1), sehingga tiap masukan hanya mengenal dua nilai itu. Secara intuitif JST lebih praktis dibanding ANFIS karena kemampuan fuzzy dari ANFIS tidak berfungsi jika hanya bernilai biner (1 dan 0). Tetapi jika kasusnya RGB atau CMYK dengan range bilangan yang cukup besar 0 hingga 255 maka peran fuzzy pada ANFIS jadi penting.

Masalah Jumlah Masukan pada ANFIS

Jika menggunakan data angka 1 sampai 5 yang direpresentasikan dengan matriks berukuran 5×3 maka kita memiliki vektor berukuran 1×15 untuk tiap-tiap angka. Jadi ada 15 input pada ANFIS-nya. Ketika dipraktekan di kelas, baik Matlab 2013 maupun 2014 dengan prosesor i5 dan RAM 4 Gb, anfisedit pada Matlab tidak sanggup.

Pesan kesalahan tersebut muncul di tahap Generate FIS yaitu setelah tombol OK ditekan. Matlab tidak sanggup meng-create ANFIS dengan masukan sebanyak 15. Berikut ini dicoba dengan mereduksi tiap angka menjadi 5 masukan.

Rule akan terbentuk sebanyak 32 buah kombinasi dari MFs (membership function) dengan satu masukan dengan masukan lainnya. Ketika di-training dengan hybrid method dihasilkan ANFIS yang siap dipakai.

Mereduksi Jumlah Masukan

Cara mereduksi masukan adalah dengan menerapkan fungsi imresize pada Matlab. Fungsi ini akan menghasilkan citra yang lebih kecil ukurannya. Tapi tentu saja akan sedikit berbeda dengan citra sebelum direduksi. Selain itu citra yang tadinya berbentuk biner berubah menjadi real. Misal kita memiliki image angka dua dengan ukuran 5×3 (atau vektor sepanjang 15 kolom).

  • >> duaReal
  • duaReal =
  • 1 1 1
  • 0 0 1
  • 1 1 1
  • 1 0 0
  • 1 1 1

Jika diterapkan fungsi imshow akan diperoleh image angka 2 (lihat yang berwarna putihnya).

  • imshow(duaReal,’InitialMagnification’,5000)

Selanjutnya kita reduksi dengan fungsi imresize. Perhatikan di bagian akhir (0.75) menyatakan persentasi pengecilan dari ukuran sebenarnya.

  • >> duaCrop=imresize(duaReal,.75)
  • duaCrop =
  • 0.6902 0.8532 1.0162
  • 0.4380 0.7667 1.0654
  • 0.8851 0.2718 0.2707
  • 0.9837 0.9288 0.9316

Gambar berikut adalah pengecilan menjadi setengahnya (kiri) dan diperbesar 3 kali lipat (kanan). Sepertinya yang diperkecil tidak begitu jelas.

Jadi bagaimana, sanggupkah ANFIS mengenali pola citra? Sepertinya perlu membatasi jumlah masukan kira-kira 5 sampai 10 untuk laptop rata-rata. Selain itu perlu preprocessing untuk mereduksi pola. Jangan lupa, perhatikan batas pengecilan maksimal agar citra masih dikenali, dan terhindar dari false positive. Sekian, selamat mencoba.

Merubah Format Image 1 dan 0 Menjadi 1 dan -1 Secara Cepat

Jaringan Syaraf Tiruan berfungsi menirukan fungsi otak manusia yang berisi neuron-neuron. Neuron ini ketika bekerja mengatur bobot dan bias sesuai dengan masukan dan targetnya. Ketika mengatur bobot dan bias terkadang diperlukan bilangan-bilangan yang mudah diolah. Biasanya lebih disukai yang sudah dinormalkan (normal Euclidean). Selain itu untuk kasus tertentu seperti data gambar, lebih disukai yang berbentuk 1 dan -1 dibanding dengan 1 dan 0 (lihat buku-buku tentang JST), untuk image black-white. Sementara bentuk 1 dan nol lebih mudah ketika mengetik/membuat matriks (karena tanpa mengetik minus “-“). Tentu saja repot jika mengubah manual nol menjadi -1, tetapi dengan cara berikut, hanya diperlukan satu langkah untuk merubah 1 dan nol menjadi 1 dan -1.

  • >> empat=[1 0 1;1 0 1;1 1 1;0 0 1;0 0 1]
  • empat =
  • 1 0 1
  • 1 0 1
  • 1 1 1
  • 0 0 1
  • 0 0 1

Logika sederhana adalah dengan mengurang 0 dengan 1 agar menjadi -1. Tetapi tentu saja yang 1 akan menjadi nol. Oleh karena itu kita kalikan dua agar 1 menjadi 2 dan jika dikurangkan 1 menjadi 1. Sementara nol dikalikan 2 tidak berubah.

  • >> empatb=empat*2
  • empatb =
  • 2 0 2
  • 2 0 2
  • 2 2 2
  • 0 0 2
  • 0 0 2

Setelah dikalikan dengan 2 kurangkan dengan satu seluruh matriks itu. Gunakan fungsi ones untuk membuat matriks berisi angka 1.

  • >> empatc=empatb-ones(5,3)
  • empatc =
  • 1 -1 1
  • 1 -1 1
  • 1 1 1
  • -1 -1 1
  • -1 -1 1

Tampak hasilnya sesuai dengan yang diinginkan. Coba lihat dengan fungsi imshow apakah hasilnya tampak sama dengan sebelumnya, yaitu angka “4”. Beberapa literatur menyarankan menggunakan versi -1 dibandingkan dengan nol ketika mengolah data dengan jaringan syaraf tiruan (neural networks).

imshow(empatc,’InitialMagnification’,5000)

Lihat yang berwarna putih menunjukan angka “4”. Jadi caranya mudah, kalikan dengan “2” dan kurangkan dengan matriks 1 (fungsi “ones”). Sekian, semoga bermanfaat.

Memodelkan Suspensi

Dosen/M.Kul/Ruang/Jurusan: Rahmadya,PhD/T.Pemodelan&Simulasi/Lab.Software/T.Komputer D3

Salah satu hal tersulit dari pemodelan adalah membuat sesuatu yang ingin dimodelkan menjadi model matematis. Konversi menjadi model ini dikenal dengan istilah abstraksi. Tentu saja kita tidak bisa membuat model matematis yang sangat menyerupai kondisi fisik. Tetapi jika kita mampu mengekstrak hal-hal penting menjadi model matematis, insya Allah kita bisa membuat model yang menyerupai kondisi real dari sistem yang kita modelkan.

Model Suspensi

Diperlukan beberapa variabel untuk memodelkan suspensi sederhana yaitu massa, konstanta pegas dan konstanta peredaman. Gambar berikut memperlihatkan suspensi sederhana.

Inputnya adalah gaya dari struktur jalan yang berefek pada translasi/perpindahan (variabel y) yang setara dengan gaya perlawanan pegas dan peredam. Persamaan kemudian dikonversikan menjadi persamaan Laplace agar persamaan differensial tersebut dapat diselesaikan.

Mungkin video berikut bisa sedikit menjelaskan langkah-langkah membuat model matematis dari model fisik.

Membuat Aplikasi

Berikutnya adalah membuat program untuk mensimulasikan parameter pegas dan redaman agar dihasilkan respon yang pas (tidak terlalu “bumpy” atau keras). (Video tutorial lihat grup WA). Semoga bermanfaat.

 

 

Menampilkan Citra Kecil dengan Fungsi IMSHOW Matlab

Citra biasanya ditampilkan dari file gambar (jpg, bmp, tiff, dan sejenisnya). Tetapi di Matlab, citra bisa juga ditampilkan dari matriks. Berikut ini contoh matriks yang menampilkan angka 7 segment. Buka Matlab, arahkan Current Directory ke folder yang sudah kita persiapkan dan ketik matriks yang menyatakan angka “empat” berikut ini:

  • >> empat=[1 0 1;1 0 1;1 1 1;0 0 1;0 0 1]
  • empat =
  • 1 0 1
  • 1 0 1
  • 1 1 1
  • 0 0 1
  • 0 0 1

Perhatikan angka satu di matriks di atas menunjukan formasi angka 4. Untuk melihat bentuknya dengan jendela baru, gunakan fungsi imshow().

Namun masalahnya adalah bentuknya kecil sekali. Oleh karena itu perlu ditambahkan parameter InitialMagnification untuk memperbesar citra hasil fungsi tersebut. Berikut ini contohnya:

>> imshow(empat, ‘InitialMagnification’, 5000)

Perhatikan angka di atas, yang berwarna putih adalah angka “1” pada matriks empat yang telah dimasukan sebelumnya. Selamat mencoba, semoga bermanfaat.

Error mclmcrrt7x.dll pada Hasil Kompilasi Matlab

Lanjutan dari postingan yang lalu tentang instal Matlab yang digunakan untuk kompilasi program, banyak di internet pertanyaan mengenai setelah kompilasi sukses dikerjakan tetapi executable program tidak berjalan dengan semestinya dan muncul pesan kesalahan di bawah ini.

Banyak komentar yang menjawab masalah-masalah tersebut, dari yang ilmiah hingga yang aneh-aneh. Setelah membaca kilat komentar-komentar yang kebanyakan dengan bahasa Inggris tersebut ada satu komentar yang cukup OK, yaitu RESTART. Gitu saja, kebanyakan, termasuk saya, malas kalau me-reset komputer sehabis menginstall. Maklum laptop tua yang kalau restart lama banget. Akibatnya ketika menjalankan program hasil kompilasi tersebut tidak dijumpai dll yang memang terisi setelah restart. Masalah ini mirip menjalankan program aplikasi Matlab pada komputer yang tidak terinstal Matlab di dalamnya. Program exe tidak bisa dijalankan terlebih dahulu kecuali menjalankan exe paket yang diperoleh ketika kompilasi (cukup besar juga sekitar ratusan Mb). Paket tersebut menginstall dll Matlab yang gratis diinstall pada komputer target.

Saat ini saya masih menghadapi problem di Matlab 2013 dan 2014 yang gagal dalam mengkompilasi m-file menjadi exe. Anehnya pada Matlab 2015 berjalan, walau ada sedikit masalah ketika melakukan kalkulasi.

Masalah Lisensi yang Expired pada Matlab

Saat ini beberapa Matlab versi jadul dipaksa memperbaharui lisensinya, kalau tidak, aplikasi tersebut tidak dapat digunakan. Taktik ini cukup berhasil dan banyak yang terpaksa membeli versi student Matlab dengan harga lisensi sekitar Rp 2 jt-an (tanpa toolbox). Sayangnya untuk versi student tidak disertai dengan fasilitas kompilasi menjadi executable program.

Tetapi jangan khawatir, Matlab jadul, misalnya 2007a dan masih dapat digunakan. Saya sendiri terkadang menggunakannya untuk mengkompilasi M-file. Kebanyakan berhasil dengan baik. Untuk mengatasi problem lisensi dapat menggunakan taktik berikut:

  • Gunakan vmware tanpa koneksi internet dan instal Matlab di dalamnya
  • Mundurkan tahun pada tanggal komputer. Sesederhana itu dan Matlab 2007a, 2008b atau sebelumnya siap digunakan.

Mengapa saya suka Matlab 2007a? ternyata untuk jaringan syaraf tiruan versi inilah yang terbaik dibanding dengan 2008b (lihat post yang lalu). Cukup uji saja dengan training dan testing logika XoR. Semoga bermanfaat.

[Update: 29.4.2018]

Iseng-iseng mengaktivasi ulang Matlab 2008b dengan lisensi 2013b ternyata bisa juga. Akhirnya bisa beraktivitas lagi dengan Matlab versi 2008b yang cepat.

Instruksi Keluar dari Kalang (Loop) pada Matlab

Beberapa hari ini ada sedikit masalah ketika mengkonversi program yang dibuat dengan M-file menjadi berbasis Graphic User Interface (GUI). Program tersebut mengkalkulasi secara serial beberapa lahan yang akan dioptimasi. Ketika tidak semua lahan dioptimasi, tentu saja ketika sampai ke lahan terakhir, program harus keluar dari proses kalkulasi dan merangkum hasilnya.

Instruksi GOTO

Untuk rekan yang pernah belajar bahasa pemrograman jadul (BASIC, Fortran, dan sejenisnya) pasti mengenal instruksi GOTO tersebut. Matlab tidak menyediakan instruksi tersebut, tetapi beberapa volunteer berhasil membuat fungsi goto() yang mengarahkan urutan program ke lokasi tertentu (berbasis nomor baris atau dalam bentuk string label). Silahkan kunjungi situsnya, dan jalankan beberapa sample programnya.

Example 22:

  • a = 0;
  • 2-
  • goto([6,6,6,6,6,6,9])
  • return
  • 5-
  • 6- a = a + 1;
  • 7- goto(‘End’)
  • 8- return
  • 9- msgbox(num2str(a))
  • 10-
  • 11- % LABEL End

Tampak instruksi goto mengarahkan ke baris perintah 6,6,6,6,6,6, dan terakhir 9. Perhatikan juga selain dengan baris instruksi, goto juga bisa mengarahkan ke label ‘End’ di akhir program. Instruksi goto di berbagai bahasa pemrograman sudah jarang dipakai dan sangat tidak disarankan untuk digunakan.

Break, Return, dan Continue

Tadinya lumayan lega setelah mengunduh fungsi goto(). Tetapi ternyata bermasalah ketika jalan di GUI, entah mengapa. Akhirnya, setelah sedikit mengutak-atik struktur program digunakanlah satu dari tiga fungsi penghentian proses, yaitu continue. Sebenarnya fungsi ini telah saya kenal lama, tetapi jarang dipakai. Namun ketika diterapkan di fungsi serial tersebut, tidak bisa karena bukan instruksi kalang/loop.

Ternyata jawabannya sederhana. Buat saja kalang dengan iterasi berjumlah satu. Ketika dijumpai kondisi tertentu, gunakan continue untuk keluar dari kalang tersebut. Misalnya dengan instruksi berikut.

  • JPLnew=JPLnew-1
  • if JPLnew == 0
  • continue
  • end

Misalnya saya ada 10 proses dan user hanya meminta 5 saja secara berurutan, maka tiap proses harus berkurang 1 dan ketika ditemui nilai nol, program harus loncat keluar 10 proses tersebut (hanya diminta lima). Agar keluar dari kalang, gunakan saja kalang dengan satu iterasi sebelum proses.

  • iteratian=1
  • JPLnew=JPL
  • for i=1:iteration
  • …….

Perhatikan perbedaan break, return dan continue dengan cara mengetik help break/return/continue pada command window. Sekian, semoga bermanfaat.

 

Beralih dari Program Berbasis Konsol ke Graphic User Interface (GUI) pada Matlab

Berbasis konsol atau yang dikenal dengan istilah teks merupakan pemrograman tertua. Sebelum ada pemrograman visual, pemrograman teks menjadi andalan para programmer dalam membuat suatu aplikasi. Pada Matlab, pemrograman berbasis teks masih digunakan dalam bentuk command window dan m-file.

Command Window

Command Window merupakan dasar pemrograman pada Matlab. Matlab menyediakan m-file, yaitu suatu file yang berisi kode program. Ada dua jenis yaitu script dan function. Biasanya yang digunakan adalah function. Sementara itu command window digunakan untuk menguji apakah suatu kode dapat berjalan dalam m-file. Diibaratkan pelukis yang akan menggambar sebuah lukisan, command window adalah plat yang digunakan pelukis untuk mengecek warna sebelum dituangkan ke lukisan. Pada Matlab, sebelum seorang pemrogram menulis kode di m-file editor (editor yang disediakan Matlab untuk mengetik program), sebaiknya diuji dahulu di Command Window. Jika di Command Window berjalan dengan baik, maka di m-file biasanya berjalan dengan baik juga.

Graphic User Interface (GUI)

Pertama kali Matlab diluncurkan, tidak disertai dengan pemrograman visual. Walaupun demikian, beberapa pemrogram bisa menciptakan GUI dengan kode-nya. Namun agak merepotkan. Akhirnya di versi-versi berikutnya, toolbox GUIDE dibuat, yaitu toolbox untuk merancang input-output dalam sebuah jendela program. Ketika GUI mudah dibuat, kemampuan Matlab dalam komputasi sedikit terbantu, yaitu dari sisi user friendly program yang dibuat programmer.

Kendala-Kendala

Beberapa masalah muncul ketika beralih dari konsol ke GUI. Bagi pengguna yang biasa menggunakan visual basic, delphi, dan pemrograman visual lainnya, sedikit heran dengan format GUI pada Matlab. Bentuk antar fungsi Matlab sepertinya sudah berbasis object, sehingga ada sedikit aturan yang harus diikuti programmer. Untungnya Matlab menyediakan bantuan (sekadarnya). Contohnya adalah teknik menangkap masukan, serta mengkonversinya menjadi numerik (jika yang ditangkap angka). Di bagian atas fungsi terdapat bantuan kode yang bisa dicopas.

Perhatikan “Hint” di atas yang saya copy ke kode yang dibuat (jumlahPL). Ada sedikit metode penanganan object (diistilahkan dengan “handles”). Supaya tidak bingung, ikuti saja penamaannya (yaitu dengan istilah “handles”) walaupun sebenarnya bisa diganti.

Ketika riset, saya menggunakan konsol untuk optimasi penataan wilayah. Program berjalan dengan baik (lihat artikel tersebut di jurnal internasional, dan conference), tetapi ketika coba dijalankan dengan GUI beberapa fungsi seperti type, dan pareto diblok Matlab karena merupakan fungsi bawaan Matlab (padahal ketika dijalankan pada konsol (Command Window) berjalan dengan baik. Akhirnya dengan susah payah saya ganti dengan nama lain yang belum dimiliki Matlab. All in all .. sepertinya beralih ke GUI menjadi keharusan karena dapat memudahkan user memakainya, apalagi saat ini sudah terkoneksi dengan sistem database dengan mudah. Sekian, semoga bermanfaat.

Beralih dari GUI ke Kode Program Pada Matlab

Graphic User Interface (GUI) atau yang sering diistilahkan dengan pemrograman visual saat ini menjadi keharusan suatu program komputer. Dengan GUI, pengguna mendapatkan kemudahan dalam menggunakan program yang dibuat. Sehingga tingkat keinginan penggunaan dalam menggunakan aplikasi tersebut menjadi tinggi (attitute toward usage). Maka tuntutan programmer terhadap bahasa pemrograman yang mudah dalam pembuatan GUI sangat tinggi saat ini. Matlab sendiri memiliki kemudahan tersebut. Berikut ini kemudahan-kemudahan yang disediakan Matlab.

Menambahkan Komponen-Komponen

Matlab memiliki banyak komponen-komponen untuk membantu dalam pembuatan GUI seperti tombol button (pushbutton), edit text, dan lain-lain. Pembuatannya sederhana, yaitu hanya dengan drag dengan mouse.

Beralih ke Kode

Untuk beralih dari jendela GUI ke pemrograman (coding) pada Matlab tinggal klik kanan pada komponen yang kita tambahkan di rancangan GUI. Pilih view callback lalu pilih salah satu pilihan, misalnya Callback, maka akan muncul jendela kode. Tentu saja harus disimpan terlebih dahulu project yang dikerjakan.

Silahkan masukan kode program di M-file editor yang baru dibuka. Cukup mudah, hanya saja untuk input teks agak sedikit ribet yaitu saat menangkap dengan membuat objek. Untungnya ada bantuan dari M-file untuk menangkap inputan.

Debug

Ketika uji coba program yang baru saja dibuat, terkadang dijumpai kesalahan-kesalahan sintaks. Matlab memberitahu lokasi baris tempat kesalahan. Cara mengetahuinya adalah dengan mengklik “line” di command window yang berwarna merah.

 

Steganografi Untuk Menyembunyikan Pesan

Steganografi adalah teknik menyisipkan pesan ke dalam suatu media agar kerahasiaan pesan tersebut terjaga. Berbeda dengan kriptografi yang tampak ada pesan yang ditutupi, pada steganografi bahkan orang lain tidak tahu kalau ada pesan yang dirahasiakan karena menempel pada suatu media, misalnya gambar, musik, dan lain-lain.

Untuk mencoba fungsi steganografi pada Matlab, silahkan unduh M-file dari situs berbagi fungsi di sini. Sebaiknya login terlebih dahulu jika ingin mengunduh file lengkapnya. Jika tidak punya akun, bisa signup terlebih dahulu dengan mengisi data. Jika sudah diunduh, siapkan dua gambar, satu gambar rahasia dan sisanya untuk penutup (cover). Gunakan imresize terlebih dahulu agar kedua gambar berukuran sama.

Untuk menerapkan ada baiknya menggunakan citra hitam-putih, sebab jika menggunakan RGB harus dimodif m-filenya agar ukuran matriksnya MxN tanpa ada tambahan MxNxt. Gambar kiri adalah gambar penutup, sementara yang kanan yang akan disembunyikan.

Selanjutnya gambar 2 (kanan) akan disisipkan ke dalam gambar 1 agar gambar tanda tangan tidak tampak. Perhatikan gambar berikut yaitu gambar yang berisi tanda-tangan di dalamnya.

Pada gambar di atas tidak tampak gambar tanda-tangan, padahal jika gambar tersebut diekstrak (dikurangkan dengan cover image) akan menghasilkan ekstrak gambar seperti di bawah ini.

Siapa sangka gambar foto saya memiliki gambar rahasia (tanda tangan) di dalamnya. Sekian semoga bermanfaat.

Menyimpan Data dalam Bentuk Struktur (Struct)

Ketika mengimpor data dari sistem basis data (biasa atau spasial), biasanya berbentuk struktur. Misalnya mengimpor data spasial dari sebuah shapefile berikut ini.

>> a=shaperead(‘Commercial.shp’)

a =

344×1 struct array with fields:

Geometry

X

Y

Id

Name

Untuk melihat isi dari “Name” cara melihatnya adalah dengan titik antara nama struktur (“a”) dan nama field-nya.

>> [a.Name]

ans =

Kimia FarmaBlue Bird PoolPusat Arsip JAMSOSTEKBaliku Agung PerkasaSiantar ….. dst

Sedikit berbeda dengan tabel, struktur memiliki bentuk sebaliknya, yaitu baris untuk field dan kolom untuk record. Jadi jika ingin “mengutak-atik” perlu dilakukan proses transpose terlebih dahulu.

Menyimpan Data dalam Format Struktur

Untuk mengetahui caranya, silahkan mengetik “help save” di command window. Di bagian bawah ada penjelasan bagaimana membuat file mat dengan tipe struct (struktur). Coba saja “copas” kode berikut ini:

s1.a = 12.7;

s1.b = {‘abc’, [4 5; 6 7]};

s1.c = ‘Hello!’;

save(‘newstruct.mat’, ‘-struct’, ‘s1’);

Perhatikan di folder, muncul satu file baru bernama ‘newstruct.mat’ yang berisi tiga variabel yaitu a, b, dan c. Bagaimana memanggilnya? Mudah saja ketik di command window “load newstruct”. Beberapa function membutuhkan bentuk struktur ini, so semoga bermanfaat.

Update: 14/2/2018

Ternyata bisa juga dengan format:

save(‘newstruct.mat’,’s1′)

Konversi UTM ke Latitude – Longitude (Terapan)

Ada tugas revisi buku, dan rencananya ada tambahan di bagian implementasi Matlab dengan sistem basis data (Access dan MySQL) yaitu data spasial dan pemrosesan teks. Cukup menarik ternyata Matlab memiliki banyak fasilitas, bahkan sistem informasi geografis (SIG) pun dilayani. Postingan singkat ini (lanjutan dari post yang lalu) menggambarkan bagaimana mengutak atik SIG dengan Matlab.

Salah satu komponen penting dari SIG adalah proyeksi. Salah satu proyeksi yang terkenal adalah Universal Transverse Mecartor (UTM) yang membagi bumi menjadi zona-zona. Untuk komputasi lebih mudah menggunakan jenis koordinat desimal ini, dibanding dengan jam, menit, detik atau lintang dan bujur. Repotnya ketika selesai melakukan kalkulasi dengan Matlab terkadang untuk menampilkan ke SIG berbasis web (Web SIG) perlu dikonversi ke latitude (lintang) dan longitude (bujur).

Setelah searching seharian dari situs yang remeh temeh hingga yang serius, ternyata situs Matlab sudah menyediakannya (lihat link ini). Karena tidak tersedia di instalasi Matlab, mau tidak mau harus membuat M-file yang dikopi dari situs tersebut. Untuk teori dasar silahkan lihat link ini (sebaiknya jangan deh, ntar pusing he he).

Jadi prinsipnya setelah matlab mengolah data spasial, kemudian hasilnya sebelum dikirim ke Web SIG dikonversi terlebih dahulu dari UTM ke lintang bujur karena Google Map API (lihat caranya) memerlukan data lintang bujur bukan UTM (kabarnya ada juga gmap4 yang bisa menggunakan UTM). Walau singkat semoga bermanfaat.

Deep learning, Machine Learning & Artificial Intelligent

Tiga istilah yang mirip tetapi sejatinya berbeda. Untuk menjawabnya tidak ada salahnya membaca buku tentang deep learning karangan (Kim, 2017). Dalam buku tersebut, secara gampangnya dijelaskan, deep learning adalah salah satu bagian dari machine learning, sedangkan machine learning sendiri merupakan salah satu subjek dari artificial intelligent (AI).

Machine Learning

Machine Learning (ML) bukanlah mengajari seorang murid yang berupa mesin. Kalaupun iya, itu adalah AI. ML di sini adalah membuat sebuah model dengan melatihnya lewat suatu data. Dengan demikian model tersebut bisa menjawab inputan tertentu sesuai dengan hasil pembelajaran dari data yang dikenal dengan istilah data training. Dari data dapat dibuat dua model yang terkenal yaitu regresi dan klasifikasi. Yang saat ini banyak diteliti adalah klasifikasi yang terdiri dari supervised, unsupervised, dan reinforcement.

Deep Learning

Saat ini pemodelan yang terkenal adalah artificial neural network (JST). Metode ini sempat mengalami pasang surut. Setelah McCulloch – Pitt menemukan model JST pertama, terjadi kevakuman karena metode ini tidak mampu menyelesaikan masalah sederhana, misalnya logika XOR. Namun setelah 30 tahun kemudian, munculnya backpropagation, sebuat metode learning baru yang bisa diterapkan dalam multilayer perceptron, akhirnya JST mulai menggeliat lagi, namun kemudian redup lagi karena masalah performa. Setelah 20 tahun kemudian, yaitu pertengahan 2000-an, diperkenalkanlah Deep Learning yang berfokus dalam meningkatkan performa Hidden Layer, yaitu beberapa layer antara input dan output. Sehingga riset tentang JST semarak lagi. Yuk, baca bareng buku itu.

Ref

Kim, P. (2017). MATLAB Deep Learning. New York: Apress. https://doi.org/10.1007/978-1-4842-2845-6

 

Matlab dan Penerapannya

Matlab merupakan software untuk komputasi yang dibuat oleh sebuah vendor software bernama Mathworks. Software yang biasa digunakan kampus/lembaga pendidikan ini cukup ampuh untuk mengimplementasikan suatu metode tingkat lanjut. Prinsip yang berbasis matrix menjadi keunggulan tersendiri dibanding bahasa pesaing lainnya. Oiya, Matlab itu singkatan dari “Matrix Laboratory” lho, bukan “Mathematic Laboratory”.

Harga

Software ini merupakan software yang berbayar, lihat link ini untuk mengetahui informasi resminya. Untungnya, bagi kampus, seperti yang saya gunakan di kampus tempat kuliah, harganya bisa sangat murah, sekitar 7 jutaan rupiah.

Tentu saja itu harga standar, jika ingin menggunakan fasilitas tambahan khusus lainnya, seperti: simulink, control design, dan lainnya sesuai jurusan yang menggunakannya, ada biaya tambahan. Khusus untuk pengguna yang seorang mahasiswa tidak sampai satu juta. Hanya saja untuk dipakai pribadi (non pendidikan), harganya lumayan mahal, sekitar 30-an juta rupiah. Hal inilah yang membuat banyak yang beralih ke bahasa pemrograman lainnya, bahkan ada yang mirip yaitu Octave dengan sintaks yang tidak berbeda dengan matlab, baik dari sisi pemrograman (for-next, while, dll) hingga ekstensi file programmnya (*.m).

Alat Ukur dalam Riset

Seperti halnya riset fisika yang membutuhkan akurasi alat ukurnya, seperti timbangan, alat ukur tekanan, dan lain-lain, ketika membandingkan metode pun diperlukan alat ukur yang ter-kalibrasi. Jadi ketika membandingkan satu metode dengan metode lainnya Matlab dapat dikatakan terjamin, terutama toolbox yang digunakannya. Error dan berapa iterasi yang digunakan juga cukup dapat diandalkan. Karena tidak akurat jika membandingkan dua metode dengan software yang berbeda, misalnya satu metode dibuat dengan bahasa C++ sementara yang akan dibandingkan dibuat dengan dengan VB.

Begitu juga dengan Jurnal-jurnal tentang metode-metode yang melibatkan algoritma-algoritma tertentu. Biasanya dengan menyebutkan parameter-paramter yang digunakan dalam toolbox Matlab, peneliti lainnya dapat mereplika penelitiannya, sehingga kebenaran suatu riset bisa terjamin dan diulangi. Bandingkan jika menggunakan program “Custom”, apalagi tidak disertakan kode programnya yang bisa digunakan oleh pembaca/peneliti lainnya. Rekan-rekan saya banyak juga yang mengatakan Matlab kurang baik karena karakternya yang lamban dalam mengeksekusi instruksi dibanding dengan java apalagi c++. Khusus untuk Anda yang ingin lulus doktoral dengan cepat, Matlab bisa diandalkan. Saya jadi ingat cerita rekan saya yang membuat aplikasi dengan C++ dalam waktu setahun dengan Matlab hanya dalam waktu kira-kira sebulan saja. Namun jika untuk production, baru lain lagi ceritanya.

Untuk Membangun Aplikasi

Walaupun Matlab menyediakan fasilitas deployment yang bisa meng-generate
executable program, untuk mendevelop program, sepertinya software ini kalah pamor dengan bahasa lainnya, seperti c++ dan java yang cepat, php, ruby dan lainnya yang berbasis web. Tentu saja ketika implementasi, kecepatan dan efisiensi compiler bahasa pemrograman sangat menentukan kualitas produk software yang dibangun. Walaupun terkadang faktor lain seperti kemudahan dan kecepatan memrogram penting juga.

Harga lisensi yang mahal membuat bahasa pemrograman lainnya, terutama yang berbasis linux sering jadi pilihan utama para pengembang. Namun satu hal yang terpenting adalah, bagi seorang praktisi IT sebaiknya tidak mengandalkan satu tool saja. Lagi pula, jika bos Anda menuntut dengan bahasa “x”, tidak mungkin kita melawan, mangkir, protes, demo, karena menganggap bahasa “y” idola kita dirasa lebih powerfull, kecuali kalo memang mau dipecat. Idealis boleh saja, tetapi kalau tidak bisa memuaskan pelanggan di era informasi ini bakal ditinggalkan walau secanggih apapun karyanya.

Menyelesaikan masalah “Architecture Mismatch Driver & Application” ketika mengakses Database di Matlab

Melanjutkan postingan yang lalu tentang problematika explore database di Matlab yang melibatkan versi 64 atau 32 bit. Masalah incompatible ini sepertinya tidak direspon dengan baik. Baik oleh Windows maupun Matlab. Sepertinya ada sedikit “paksaan” bagi pengguna versi 32 bit untuk beralih ke versi 64 bit. Padahal banyak yang masih menerapkan versi 32 bit di sistem yang sedang berjalan.

Install Microsoft Access Versi 64 Bit

Pengguna Matlab 64 bit sepertinya sudah harus beralih ke versi 64 bit untuk semua hal yang terlibat dengan Matlab (environment), seperti OS dan sistem basis data-nya. Jika tidak maka akan muncul peringatan adanya ketidaksesuaian dari sisi arsitektur antara driver ODBC dan aplikasi. Perbedaan arsitektur merupakan perbedaan yang tidak sepele dalam suatu sistem perangkat lunak.

Repotnya untuk Microsoft Access, tidak bisa langsung memasang yang 64 bit tanpa meng-uninstall versi yang sebelumnya. Perlu diperhatikan jika ada visio versi 32 bit, windows meminta uninstall juga. Jadi kalau sayang dengan visio yang 32 bit atau tidak punya installer visio yang 64 bit, sebaiknya difikirkan terlebih dahulu, atau siapkan dulu visio versi 64 bitnya.

Tadinya saya masih ragu, jangan-jangan ketika uninstall yang 32 bit dan install yang 64 bit tetap saja database tidak bisa diakses Matlab 64 bit, tetapi ternyata Alhamdulillah bisa. Mungkin ini bisa menjawab pertanyaan dari pembeli buku saya tentang database di Matlab yang tidak bisa terkoneksi dengan access karena beda versi “bit”nya. Oiya, jangan khawatir, semua settingan di office 32 bit yang lalu tetap otomatis terbawa di versi 64 bit yang baru.

Mengecek Koneksi Database di Matlab

Ketika sudah menginstall versi 64 bit, pastikan di ODBC yang 64 bit terisi driver dan platform-nya yang baru (64 bit). Selalu gunakan driver untuk kedua versi access (*.mdb dan *.accdb). Pastikan ketika mengklik Configure… tida ada pesan “architecture mismatch ..” lagi.

Tambahkan satu User DSN baru dan coba buka dengan Matlab 64 bit. Setelah mengetik dexplore di command window Matlab, cari ODBC yang baru saja dibuat. Pastikan database yang dibuat dengan Access dapat dilihat isinya.

Sekian dulu info singkat ini, semoga bermanfaat dan semoga pula naskah tentang data spasial dan bigdata dengan Matlab dapat rampung secepatnya.