‘Password crypt authentication not supported’ Problem di ODBC postgreSQL

Berhubung aplikasi WebGIS menggunakan Ruby on Rail dengan database PostgreSQL mau tidak mau Matlab menggunakan dua metode koneksi ke database tersebut:

  1. Dengan JDBC
  2. Dengan ODBC

Berhubung error ketika menggunakan JDBC dimana ada pesan kesalahan pada driver, akhirnya saya memutuskan untuk menggunakan ODBC. Buka ODBC di Administrative Tools yang sesuai (32 bit atau 64 bit), dilanjutkan dengan membuat database-nya.

Ketika selesai dibuat, check apakah sudah terbaca di Matlab dengan instruksi di command window:

getdatasources

Jika datasource ODBC Anda berhasil dibuat, akan muncul namanya di antara tanda petik pada variabel ans. Jika tidak, maka Anda harus mengulangi langkah pembuatan ODBC tersebut. Lakukan pembuatan koneksi.

Perhatikan pesan kesalahan (Message) : Password crypt authentication not supported. Pesan ini terjadi karena Windows tidak menerapkan encrypt password. Hal ini terjadi karena ketika membuat ODBC saya memilih PostgreSQL saja (default). Harusnya saya memilih PostgreSQL dengan unicode:

Disable SSL Mode kemudian lakukan ‘Test‘ dengan menekan tombol Test dilanjutkan dengan ‘Save‘. Buat koneksi conn lagi ke PostgreSQL (lihat help untuk koneksi database dengan Matlab). Pastikan tidak ada pesan kesalahan, serta jika Anda ketik isconnection(conn) di command window jawabannya satu bukan nol.

Cek dengan mengambil data:

Tampak isi tabel Projects saya di Ruby on Rail.

Koneksi Matlab dengan Sistem Basis Data

Lama tidak ngeblog tidak enak juga. Banyak hal-hal yang bisa saya sharing ke orang lain yang siapa tahu membutuhkan informasi tertentu yang saya miliki. Terkadang sedih juga membaca komentar-komentar di tulisan saya yang mengatakan “sotoy”, jangan asal tulis, dan lain-lain, bahkan ada yang mengatakan saya asal “copas”. Tapi sesuai dengan prinsip situs saya “just a Little Kindness”, saya coba untuk memberi kebaikan walau hanya sedikit.

Saya dulu pernah membuat tulisan mengenai akses database dengan Visual Query Builder, dan banyak yang tidak puas dengan koneksi seperti itu. Lama saya tidak mencoba “ngoprek” hal itu karena belum merasa perlu karena akses dapat dilakukan dengan menggunakan excel atau notepad. Untuk data kecil sebenarnya tidak ada masalah, tetapi jika data yang berukuran besar, Excel tentu saja tidak sanggup menanganinya. Saya pernah mencoba mengkonversi file CSV ke dalam Access kemudian saya kembalikan lagi menjadi TXT untuk diolah Matlab dalam rangka Data Mining (waktu itu tugas Text Mining dari dosen saya). Tetapi tentu saja tidak efektif. Perlu dilakukan koneksi data langsung dari DBMS ke Matlab.

Berawal dari Hibah Penelitian dari Dikti (Hibah Bersaing) dimana tahun ketiga saya harus mengkoneksikan GIS desktop dengan Web GIS, mau tidak mau saya membutuhkan sistem basis data. Terpaksa saya harus mengkoneksikannya langsung. Cari paling mudah adalah lewat mekanisme Open Data Base Connectivity (ODBC) yang tersedia di Windows. ODBC ini memiliki keunggulan dalam hal fleksibilitas, dimana jika kita sudah merakit ODBC maka program yang telah dibuat dengan Matlab tidak tergantung dengan software DBMS yang telah ada karena koneksi antara program dengan database lewat ODBC, beda jika kita mengkoneksikan Matlab dengan Software DBMS langsung (Access, MysQL, Oracle, PostgreSQL, dll). Jika kita mengganti software DBMS, kita harus mengeset lagi program yang telah kita buat. Dengan DBMS, jika kita akan mengganti Software DBMS, tinggal menghubungkan Software DBMS dengan ODBC lagi, termasuk user dan password jika diperlukan.

Untuk membuat ODBC Anda dapat membaca literatur yang membahas tata caranya. Yang penting Anda ketahui adalah Windows yang Anda miliki, 64 Bit atau 32 Bit. Jika 32 bit sepertinya tidak ada masalah. Nah, masalah muncul jika windows yang digunakan versi 64 bit, karena ODBC yang digunakan harus mundur yang 32 bit karena software DBMS kebanyakan masih berversi 32 bit. Untuk windows 8 dengan searching di control panel, akan ditemukan dua pilihan, ODBC 32 bit atau ODBC 64 bit. Sedangkan jika Windows 7 64 bit, maka Anda harus masuk ke folder SysWOT di C: dan menjalankan file odbcad32.exe. Jika Anda memaksa menggunakan ODBC 64 bit padahal program yang Anda gunakan versi 32 bit, akan memunculkan pesan kesalahan saat melakukan koneksi Matlab dengan ODBC (mismatch .. bla bla).

Untuk menghubungkan Matlab dengan ODBC dapat Anda lakukan dengan langkah sebagai berikut. Misalkan Anda telah memiliki ODBC dari database Anda, misalnya bernama “lokasi” dengan user ID “user” dan password “123”, lakukan koneksi dengan instruksi:

Conn=database(‘lokasi’,’user’,’123)

Cukup sederhana. Cek koneksi dengan instruksi isconnection(Conn). Jika jawabannya 1 maka koneksi berjalan dengan baik, sebaliknya jika jawabannya nol, maka Anda harus mengecek error-nya. Ketik saja Conn.Message untuk melihat instruksi kesalahannya. Jika Database telah terisi, Anda dapat mengecek dengan instruksi sql “select”.

Results=fetch(conn,’select * from lokasi’)

Misalnya tabel yang ada di database kita lokasi. Anda akan menerima data dari database dengan nama Results yang siap Anda olah dengan Matlab. Bagaimana dengan input data ke database? Mudah saja, gunakan instruksi insert. Hanya saja sedikit rumit karena ada tata cara penulisan nama field yang ada di tabel. Misal ada dua field yaitu x dan y. Kemudian akan saya isi data dengan x=1 dan y=2, maka gunakan instruksi sebagai berikut:

Insert(Conn,’lokasi’,[{‘x’} {‘y’}],[1 2])

Jika tidak ada pesan kesalahan sintax di Matlab, cek apakah data sudah masuk di database Anda. Selamat mencoba.

Memanggil Web GIS di Browser Dari Matlab

Ketika membuat program yang berisi peta geografis terkadang kita ingin menampilkan koordinat bukan di tampilan koordinat lokal Sistem Informasi Geografis (SIG) kita melainkan di koordinat global pada Web GIS, contohnya google maps.

Langkah pertama, Matlab memerlukan url yang akan dijadikan target situs yang akan dibuka. Misalnya kita mempunyai lokasi dikoordinat -6.2478456,106.983, maka kita definisikan dengan suatu variabel misalnya bernama url. Ketik pada command window:

url = ‘https://www.google.com/maps/@-6.2478456,106.983,20z’

Dengan instruksi web, Matlab akan membuka browser bawaannya dan menampilkan alamat situs url. Browser secara default menggunakan browser bawaan Matlab yang menurut saya kurang baik dibanding Mozilla, Google Chrome, Internet Explorer dan sejenisnya. Tambahkan option ‘-browser’. Agar kita membuka lewat browser default kita, misalnya saya menggunakan Mozilla Firefox.

web(url,’-browser’)

Ketika dijalankan maka browser akan membuka alamat tersebut dan mengakses peta lokasi sesuai dengan alamat situs url.

Training JST

Melakukan training dengan JST sedikit berbeda dengan ANFIS. Pada ANFIS, input dan target disatukan sementara untuk JST kita harus memisahkan menjadi dua matriks. Buka toolbox JST dengan mengetik pada command window.

>>nntool

Siapkan terlebih dulu data trainingnya yaitu data input dan data target. Misalnya kita sudah menulis data input dan data target dengan notepad berturut-turut dengan nama ‘input.dat’ dan ‘target.dat’, maka kita tinggam memanggil data tersebut untuk dikonversi menjadi variable ‘*.mat’ yang dikenali oleh toolbox nntool matlab.

Perhatikan, formatnya sedikit berbeda dengan ANFIS, pada JST masukan dinyatakan dengan baris, misalnya baris pertama itu input pertama, baris kedua input kedua, dan seterusnya. Sementara target mengikuti inputnya, jadi target kolom pertama input adalah kolom pertama pada vector target. Dari contoh data di atas, input 3.2760, 32.3, 7, dan 0.0020 memiliki target 34.5.

Kembali ke NNTOOL, klik import untuk memasukan data input dan target ke toolbox JST. Jangan lupa hubungkan input dengan input dan target dengan target seperti gambar berikut.

Lakukan hal yang sama juga dengan target, dilanjutkan dengan klik ‘import‘. Berikutnya meramu JST yang akan kita buat untuk mentraining data input dan target yang telah kita siapkan. Klik New untuk membuat JST yang akan di-training. Beri nama, input, dan outputnya sesuai dengan data yang kita import sebelumnya.

Setelah di klik Create maka Anda telah berhasil membuat JST. Pastikan pada NNTOOL Anda terdapat data input, target, dan jst. Setelah itu kita siap melakukan training dengan mengklik ganda jst yang baru saja kita buat.

Pilih train dan masukan input dan target yang sesuai, lanjutkan dengan mengklik Train Network untuk memulai proses training. Tunggu beberapa saat karena Matlab sedang mentraining JST yang ada buat tersebut.

Berikutnya adalah kita coba mengecek apakah hasil training sudah sesuai atau tidak. Untuk mengetahui kualitas training, masukan aja data input ke jst yang telah Anda training, apakah sesuai dengan target atau tidak. Sebelumnya simpan terlebih dahulu jst yang telah Anda latih tersebut. Caranya dengan kembali ke jendela NNTOOL dengan mengklik Export dilanjutkan dengan memilih mana yang akan disimpan. Pastikan jst anda pilih.

Setelah mengklik Save maka Anda telah berhasil melatih jst Anda. Pastikan jst yang Anda save terletak pada directory kerja Anda. Berikut cara menguji hasil training Anda.

Perhatikan yang dilingkari adalah hasil training yang tidak cocok dengan target (ada error). JST bias memprediksi output jika input berbeda dengan data training, misalnya data berikut ini.

Algoritma Genetika di Matlab 2008 lebih baik dari Matlab 2013

Setelah pada tulisan yang lalu saya membuktikan Neural Network di Matlab 2007 lebih baik dari Matlab 2008 (https://rahmadya.com/2013/06/27/matlab-2007-lebih-baik-dari-pada-matlab-2008/), kini terjadi lagi di Matlab 2008 dengan Matlab 2013, dimana untuk algoritma genetika, hasil matlab versi lama lebih baik dari matlab versi baru. Saya masih bingung apa penyebabnya.

Kejadiannya waktu itu rekan saya mengajak diskusi tentang optimasi kontroller orde satu dan orde dua dengan menggunakan algoritma genetika. Fungsi tujuan sudah dibuat, dengan variabel yang dibentuk adalah variabel laplace s, yang merupakan hal baru selama saya menggunakan algoritma genetika. Biasanya saya menggunakan variabel biasa, seperti waktu, jarak, dan sejenisnya. Untuk contoh lain penerapan GA bisa dilihat kasus pada GIS seperti tulisan saya sebelumnya (https://rahmadya.com/2013/11/12/algoritma-genetik-dengan-toolbox-matlab/).

Saya coba menggunakan matlab versi 2013 dengan toolbox algoritma genetikanya. Dengan memasukkan fungsi tujuan, konstrain, serta variabel lainnya seperti maksimum generation = 100, stall generation = 100, mutation function = gaussian, initial population range = [0;100], cross over function, intermediate dengan ratio = 0.8, serta mencentang output berupa best fitness dan best individual.

Setelah memasukan nama fitness function, jumlah variabel, bound (batas atas dan batas bawah) saya mulai menjalankan dengan menekan tombol “start”. Diperoleh hasil fitness terbaik sebesar 1.942 dengan x1 = 109.6 dan x2 = 3.92, seperti tampak pada gambar di bawah ini.

Dari hasil riset terdahulu yang kami baca ternyata hasil terbaiknya 1.838, mengapa bisa memperoleh nilai lebih buruk? Padahal dugaan saya, riset dilakukan pada tahun 2008, kemungkinan besar dia menggunakan matlab 2008 juga. Akhirnya karena penasaran, kami menggunakan matlab 2008b sesuai dengan perkiraan saya bahwa dia menggunakan matlab 2008 saat melakukan benchmarking.

Dengan memasukan variabel, fungsi tujuan, konstrain, dan parameter-parameter lain yang sama dengan matlab versi 2013 dan merujuk penelitian tahun 2008 tersebut, secara mengejutkan diperoleh hasil yang lebih baik seperti tampak pada gambar di bawah ini.

Tampak diperoleh hasil fitness value yang lebih baik (lebih kecil/minimum) sebesar 1.837 dengan x1 = 135.07 dan x2 = 4.65 yang sedikit lebih baik dari hasil penelitian sebelumnya. Akhirnya kejadian seperti kasus neural network sebelumnya terulang kembali. Sebagai tambahan, toolbox GA bisa digenerate menjadi script dengan menekan menu FileGenerate M-File – dilanjutkan dengan memberi nama. Maka akan dihasilkan script sebagai berikut.

 

Teknik Text Mining dengan Matlab

Hari ini adalah hari penghakiman untuk tugas project mata kuliah Decision Support Technology (DST). Kasus yang kami pilih adalah menentukan dari puluhan juta record berisi pengarang dan tulisannya dan kita diminta mencari nama-nama yang seharusnya digabung berdasarkan field-field yang ada yaitu affiliation, konference, judul, dan kata kunci.

Kami sekelompok sepakat menggunakan tools Java dengan postgresql, sementara saya tetap setia menggunakan Matlab dengan Microsoft Access sebagai sistem basis datanya. Rekan saya yang berasal dari Thailand dan Uzbekistan cukup mahir dalam memainkan Java. Untuk tahap pertama mereka sudah berhasil melakukan cleaning data. Pengarang yang namanya sama jika affiliation-nya sama maka dikategorikan dalam satu pengarang yang sama.

Saya bertugas mensuplai data similarity dari pengarang-pengarang itu. Teknik pertama dengan mencari nama yang sama persih, menghasilkan akurasi 60%. Jika nama sama dan dicek affiliation-nya mirip, akurasi meningkat menjadi 70%. Berikutnya teknik-teknik lain digunakan mulai dari nama singkatan dan nama belakang, misalnya rahmadya trias handayanto, dicari apakah ada yang mirip r. t. handayanto? Diperoleh akurasi 80%. Rekan saya menganjurkan teknik switching nama pertama dengan nama terakhir, jadi dicari rahmadya handayanto dengan handayanto rahmadya, apakah ditemukan? Namun akurasinya hanya naik 1 persen menjadi 81%.

Selepas kuliah ISDM, saya berkumpul kembali dan saya menunjukkan bahwa saya menemukan nama-nama yang sama dengan menanggalkan nama tengah. Jadi misalnya rahmadya trias handayanto, akan saya cari dengan r. handayanto, apakah ada atau tidak. Mereka langsung mengecek satu sample data yang saya berikan, dan mereka terkejut ternyata ada beberapa nama yang tidak ditulis nama tengahnya dan memiliki affiliasi yang sama. Dan kami terkejut ketika akurasi naik 3 persen jadi 84%.

Sebenarnya masih banyak cara lain, seperti yang disarankan oleh Dr. Paul, dosen kami, misalnya missing word, spelling of word (france and germany), serta nama cina yang bermarga di depan. Untuk melihat contoh bagaimana Matlab mendeteksi dapat dilihat di youtube ini:

Looking for a Similar Name in Text Mining with Matlab

Some names has first name, middle name, and last name. The last name is a family name, except some country like Chine. Many literatures for simplicity only show the last name with abbreviation to the first and middle ones. For example Rahmadya Trias Handayanto will be written as R. T. Handayanto or Handayanto, R. T. (see e.g in IEEE: http://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=handayanto) so we want to predict that R. T. Handayanto is similar to Rahmadya Trias Handayanto. For experiment try to type in Matlab:

As usual, I use ‘{‘ instead of ‘(‘ because I made a cell type that fit the record on database. We want to collect other name that has similar to it like r. t. handayanto. For collecting the last name you can see my other post using regular expression: https://rahmadya.com/2014/04/18/how-to-search-last-name-using-matlab/. Therefore, we just add the first and middle, or only the last name if only a single name.

The logic is we find first the index of space that indicate the first or middle name with last name. After we count the total number of name we represent only first character with point for first name and middle name. I use if-else to detect whether the name only has one name (last name).

Try using a command window to convert the name become short name. You see that now rahmadya trias handayanto became r. t. handayanto that will compare to other that similar to it using format character (see the bottom line).

For example, we have 10 data:

You can see that Ahmed Abdul-hamid and A. Abdul-hamid that has similar name, but A. Cain may be different from A. J. Cain.

The result state that there is two names with similarity of last name and abbreviation of firs name that id=3 and id=10. With function lower we change all author name into lower case in order to easily compare. Of course, to get this code we have to understand how to manipulate matrices in Matlab.

 

How to Search Last Name using Matlab

It is a hard day, because I always sleep over the mid night. Ok, it’s about text mining. We want search from the data that has a particular family name, for example, may name, rahmadya trias handayanto. Ok, because our data usually cell type (for database), use this kind of data type:

name={‘rahmadya trias handayanto’}

We use symbol { for creating a cell type that we always find in table format. The logic for searching my lastname is by finding the last space. Try using the regular expression.

index=regexp(name,’ ‘)

Don’t forget to type space between ‘ because we want to search the index of space for name. Type celldisp(index) to see the content of index, because it is cell type. Many people have more than two names, with middle name. So we have to choose the biggest index using function max.

bigindex=max(index{1})

We have to convert the name into character if we want to present the last name using char function.

charname=char(name);

key=charname(bigindex+1:end)

We use ‘+1’ because we don’t include space to our last name. You can see the instruction below, it is very easy.

Parallel Processing on Matlab

Untuk memproses 2000-an record terhadap 2 juta record jika dijalankan dengan satu proses akan memakan waktu cukup lama karena karakternya yang serial. Untuk menjalankan proses yang parallel secara bersama maka kita dapat menjalankan lebih dari satu matlab dalam satu computer. Biasanya ini dilakukan jika kita ingin memproses data berukuran besar (big data).

First, you have to change current directory of your first matlab. If we want to create with two machines, you can open your Matlab again form start menu or from your shortcut wall. For example I want to use three Matlab for computing my algorithm at the same time for faster result.

Second, things that we have to consider is the location of the result, if you have the similar name to the output, you have to separate current directory because of the conflict of output (the last output will replace the previous one).

Last, you have to count the power of your machine. I use i5 processor, and sometimes I use four processing. The picture below show my Matlab that process 3 text processing of 2 thousand of author to other 2 million author.

Mencari Kesamaan Text dengan Matlab

Kalau pada tulisan yang dulu (https://rahmadya.com/2014/04/07/mencari-kata-dalam-text-dengan-matlab/) ketika mencari kata kita terlebih dahulu menentukan keyword (atau diistilahkan dengan term), untuk mencari nama yang sama mau tidak mau Matlab harus menentukan sendiri term yang akan dicari kesamaan dengan kata pada record yang lain. Sebagai contoh di sini saya menentukan 13 nama yang memiliki 6 orang dengan nama yang sama.

Cara kerjanya adalah pertama-tama Matlab mengambil kata kunci record pertama yaitu “ayman kaheel” sebagai term yang akan dibandingkan dengan record kedua, ketiga, dan seterusnya hingga panjang maksimal record (dalam hal ini 13 record). Jika ditemukan nama yang sama, dengan instruksi isempty, baik record term maupun yang mirip dengannya dipisahkan dalam satu tabel result. Ceritanya panjang, lebih baik langsung saya tampilkan saja kode program:

Seperti biasa, fungsi strfind bermaksud membandingkan suatu string pada vektor. Cellstr berfungsi merubah string menjadi cell karena kalau tidak dirubah, tidak bisa digabungkan menjadi satu matriks karena string berbeda-beda ukurannya, sedangkan cell selalu tetap, berapapun panjang string, tetap dianggap satu sel. Pindahkan script itu ke command window, anda akan memperoleh hasil berikut ini:

Ketika hasil diketik (result) akan memunculkan deretan nama yang sama dengan no urutnya. Berikutnya adalah bagaimana cara untuk mencari nama yang nama keluarganya sama, karena terkadang dalam literatur ilmiah, misalnya ayman kaheel, terkadang ditulis a. kaheel, sehingga jika digunakan cara di atas akan tidak berhasil. Selamat mencoba !

Mencari Kata dalam Text dengan Matlab

Matlab selain digunakan untuk perhitungan angka ternyata dapat juga digunakan untuk mengolah kata dalam Text Data Mining (TDM). Singkat saja, di sini kita buat data yang berisi sepuluh nama orang yang akan kita searching.

Kita akan mencari beberapa nama yang ada unsur “abdul”, misalnya, terlebih dahulu, konversi menjadi huruf kecil semua dengan fungsi lower.

Perhatikan, seluruh record menjadi huruf kecil semua, berikutnya kita membuat script yang akan digunakan untuk mencari orang yang ada unsur nama ‘abdul’-nya, kemudian memunculkan kode author beserta nama lengkapnya dalam satu matriks.

Sebelumnya Anda harus memasukkan terlebih dahulu vektor kode author (di sini dengan nama auth1) yang sesuai dengan nama author. Perhatikan cara penggunaan fungsi regular expression yang tersedia di Matlab (regexp).Copy kode tersebut kemudian jalankan di command window:

Berikutnya tugas berat menanti, di sini keywoard untuk mencari sudah tersedia, yakni contohnya ‘abdul’. Bagaimana jika kata kuncinya berdasarkan tiap record. Misalnya kita akan mencari dari sekumpulan nama-nama yang bernama belakang ada yang sama.

Mengimpor Big Data ke Matlab

Jika data berukuran kecil dan sedang, dengan mudah kita mengimport suatu data dari excel, notepad, dan sejenisnya. Tetapi jika berukuran besar akan menjadi masalah jika kita mengimport data dari kedua text editor tersebut. Hal ini terjadi ketika saya akan membuat vektor dan matriks data ke dalam vormat Matlab agar bisa dilakukan text mining. Excel cenderung akan memotong data menjadi 65 ribuan record saja. Sementara notepad memiliki masalah ketika akan dieksport ke Matlab (Mat).

Langkah yang cukup akurat adalah menggunakan sistem manajemen basis data, misalnya Microsoft Access. Langkah pertama adalah membuka file data tersebut (misalnya berformat xls, atau csv) ke microsoft access untuk dilakukan pemilahan menjadi kolom-kolom yang sesuai jika data yang ada berbeda jenisnya. Jangan lupa menghilangkan Field Name dengan mengisi check pada kotak isian seperti gambar di bawah ini.

Berikutnya setelah dipilah-pilah, data kita eksport ke format text yang ada di menu Micorosft Access. Tunggu hingga selesai karena jika datanya berukuran besar (sekitar 1 giga) akan memakan waktu yang lama.

Jika selesai maka secara otomatis akan berganti menjadi pesan yang ada di access.

Berikutnya tinggal kita tarik data tersebut dengan Matlab. Buka matlab anda, dan tekan tombol impor yang ada di jendela Workspace (mudah2an tidak tersembunyi). Cari datanya, lalu lakukan proses impor dengan mudah.

Tekan tombol yang bertanda panah ke bawah dilanjutkan dengan mencari file txt yang telah disimpan sebelumnya. Untuk gampangnya, simpanlah di current directory Anda.

 

Berikutnya tinggal mengklik tombol Next hingga tombol finish muncul. Tampak di workspace variabel yang telah Anda masukan. Coba iseng jalankan, jangan semua record dilihat, takutnya matlab Anda hang.

Baru kali ini saya mengalami mengolah file matlab (MAT) hingga kehabisan sumber daya RAM.

Hal Sepele Tapi Penting di Matlab

Beberapa lamanya saya mencari cara bagaimana agar layar Command Window bersih. Ternyata caranya mudah, dengan mengetik clc. Sementara instruksi clear tidak membersihkan layar melainkan membersihkan variabel yang ada di workspace.

Salah satu hal penting lainnya adalah membuat suatu vektor normal. Untuk matlab versi 2014 sih mudah saja, dengan instruksi normalize. Tetapi untuk versi yang lama, tidak dapat berjalan. Untungnya kita dapat dengan mudah memanfaatkan fungsi norm. Tinggal membagi vektor yang akan dicari normalnya dengan euclidean distancenya.

Menggunakan Fungsi Find di Matlab

Sehubungan dengan tugas mata kuliah Decision Support Technology (DST) yang saya ambil, saya diminta mengolah data yang tidak lazim, yang terkadang formatnya tidak baris dan kolom seperti yang diterapkan di beberapa sistem database. Kemampuan mengolah data yang tidak terstruktur menjadi data terstruktur agar dapat diolah dengan Matlab, mengharuskan kita terlatih dalam mengimport data baik dari database ataupun format data lainnya yang biasanya berformat dat, csv, xls, dan sejenisnya.

Baiklah di sini diandaikan kita telah berhasil mengimport data yang kita akan oleh. Pertama-tama kita praktekan mengolah data numerik. Buat data baru:

x = [2 5 7 4 3 3 3]

Maka Anda memiliki data suatu vektor. Jika seumpamanya kita ingin mencari data berisi angka 3, ketik instruksi berikut ini:

>> position = find(x==3)

position =

5 6 7

Maka anda akan memperoleh 5,6, dan 7 yang berarti posisi angka 3 ada di index 5,6, dan 7 dari vektor x.

Bagaimana jika datanya bukan numeric, misalnya string? Coba kita buka dulu sampel data:

str = ‘0.41 8.24 3.57 6.24 9.27’;

Data di atas merupakan data string, walaupun berisi angka di dalamnya. Kita akan mencari nilai numerik dari data tersebut dengan fungsi textscan.

C = textscan(str,’%f’);

C =

[5×1 double]

Tampak hasilnya adalah data C yang berisi cell dengan format membernya floating point yang diindikasikan dengan ‘%f’. Untuk melihat isi dari cell tersebut lakukan instruksi berikut ini:

celldisp(C)

C{1} =

0.4100

8.2400

3.5700

6.2400

9.2700

Hasilnya adalah nilai numerik dari data str yang tadinya berformat string. Gunakan fungsi find, misalnya kita akan mencari lokasi angka 9.27, gunakan instruksi:

find(C{1}==9.27)

ans =

5

Lokasi telah ditemukan di index 5 dari data C{1}. Ok, selamat mencoba dan mengutak-atik, jika ada masalah silahkan menghubungi situs resmi Matlab.

Membuat Program Sederhana Fuzzy

Sudah lama tidak menulis tentang soft computing, maklum kesibukan luar biasa karena kuliah. Kebetulan kali ini saya mengambil mata kuliah Artificial Intelligent and Neuro-Fuzzy. Materi ini membahas seluruh ilmu soft computing, dimulai dari syaraf tiruan, fuzzy, algoritma genetika, hingga turunannya seperti particle swarm, simulated annealing, dan lain-lain. Kali ini saya hanya akan meneruskan tulisan saya yang dulu dengan menambah satu contoh aplikasi, mengingat banyak yang membutuhkan.

Untuk menjalankan aplikasi ini, letakkan di folder kerja Anda (current directory) setelah diekstrak, kemudian jalankan dengan mengetik nama file *.m di command window. Untuk melihat dan mengutak-atik script dengan mengetik edit <nama file *.m> serta untuk melihat alur logika fuzzy dengan mengetik fuzzy <nama *.fis>. Selamat mencoba.

beasiswa