Tuesday, November 8, 2011

Minor dan Kofaktor

Materi ini tentu sudah banyak yang mengenal. Tapi ada baiknya diposting lagi, terutama jika ingin mengimplementasikannya enggunakan MatLab.
Minor (Mij) : matrik yang diperoleh dari matrik lama dengan menghilangkan barik ke i dan kolom ke j.
Kofaktor (Cij) : Minor dikalikan dengan -1 pangkat (i+j)
Di matlab bisa diimplementasikan sebagai berikut:

Tuesday, June 14, 2011

Update

Lama blog nggak diupdate... bukan karena sibuk... tapi memang keadaan yang membuat males nulis. Kali ini ada class sederhana yang nantinya dapat digunakan untuk membantu kita dalam menggenerate kode secara otomatis (pake Java).

Tuesday, November 3, 2009

Pass by Reference di Java

Istilah ini sering kita jumpai pada saat kita akan membuat suatu fungsi. Pass by value dan pass by reference dikenal antara lain di Pascal, C, C++. Bagaimana dengan java. Di java hanya dikenal konsep pass by value. terus bagaimana jika kita ingin menerapkan konsep pass by reference di java? Konsep ini dapat diimplementasikan dengan bantuan objek. 

Perhatikan contoh berikut:
public class Tukar {
   public static void menukar(int a, int b) {
      int c;
      c=a;a=b;b=c;
   }
  public static void main(String[] arg) {
      int x=9,y=8;
      menukar(x,y);
      System.out.println("Nilai x = "+x);
      System.out.println("Nilai y = "+y);
   }
}

Bandingkan dengan contoh berikut:
public class Tukar1 {
   int a,b;
   public static void menukar(Tukar1 t) {
      int c;
      c=t.a;t.a=t.b;t.b=c;
   }
  public static void main(String[] arg) {
      Tukar1 tkr=new Tukar1();
      tkr.a=9;tkr.b=8;
      menukar(tkr);
      System.out.println("Nilai a = "+tkr.a);
      System.out.println("Nilai b = "+tkr.b);
   }
}

Friday, October 30, 2009

Input data ke Console dengan Java

Walaupun sepele ternyata banyak juga yang memerlukan ini. Input ke Console membutuhkan class BufferedReader yang ada pada package java.io
Contoh berikut dapat dicoba:

import java.io.*;
public class InputDt {
 public static void main(String[] args) 
  BufferedReader x=new BufferedReader(new InputStreamReader(System.in));
  String b1="",b2="";
  System.out.print("Masukkan bilangan pertama = ");
  try { b1=x.readLine();}
  catch(IOException e) {}
  System.out.print("Masukkan bilangan kedua   = ");
  try { b2=x.readLine();}
  catch(IOException e) {}
  int bil1,bil2,bil3;
  bil1=Integer.parseInt(b1);
  bil2=Integer.parseInt(b2);
  bil3=bil1+bil2;
  System.out.println("Hasil penjumlahan = "+bil3);
 }
}

Program diatas digunakan untuk menjumlahkan dua angka yang diinputkan dari keyboard. Semua input selalu bertipe string, sehingga pada saat akan dijumlah harus diubah dahulu menjadi tipe int/long/float/double.
Mengubah String menjadi integer, Integer.parseInt
Mengubah String menjadi Long, Long.parseLong
Mengubah String menjadi float, Float.parseFloat
Mengubah String menjadi double, Double.parseDouble

Friday, May 15, 2009

Friday, May 8, 2009

Mendapatkan MetaData suatu Database dengan Java

Dalam suatu database yang sudah kita buat, kadang kita ingin mengetahui metadatanya. Langkah yang harus dilakukan, pertama seperti biasa lakukan registrasi driver dan koneksi ke database (seperti postingan sebelumnya). Selanjutnya kita buat objek class DatabaseMetaData dengan pernyataan sbb:

DatabaseMetaData dbmd=con.getMetaData();
dimana con adalah objek class Connection yang sudah dibuat sebelumnya.

Untuk mendapatkan nama-nama tabel yang ada dalam database buat objek class ResultSet dengan pernyataan sbb:

ResulSet rs=dbmd.getTables(null,null,null, new String[] {"TABLE"});

Nama-nama tabel yang ada diperoleh dari fungsi getString("TABLE_NAME"). Sedangkan untuk mendapatkan nama field, tipe data dan lebar data dari masing-masing tabel digunakan pernyataan sbb:

ResultSet rs1=dbmd.getColumns(null,null, nama_tabel,null);

Fungsi yang digunakan untuk mengetahui
nama field, tipe data dan lebar data adalah getString("KONSTANTA"), dimana KONSTANTA yang digunakan adalah sbb:

COLUMN_NAME untuk nama field
TYPE_NAME untuk tipe data
COLUMN_SIZE untuk lebar data

Nb: Databasenya pake MySql

Friday, March 27, 2009

Koneksi MySQL dengan Java

Untuk dapat memulai database programming dengan Java (menggunakan Server database MySQL), langkah persiapan yang harus dilakukan adalah:
1. Pastinya Java sudah terinstalasi dong.
2. Demikian Juga MySQL, harus sudah diinstalasi.
3. Download konektor Java dengan MySQL dan copykan di lokasi instalasi java pada sub direktori lib.
4. Setting Environment Variabel untuk:
System variabel untuk lokasi dimana java dan javac berada (di instalasi java pada subdirektori bin).
System variabel untuk lokasi dimana conector java berada
(di instalasi java pada subdirektori lib).
User variabel untuk classpath.

Untuk koneksi dapat menggunakan class berikut:


Saturday, February 28, 2009

Median Filtering

Ada dua cara yang dilakukan dalam peningkatan kualitas citra. Pertama adalah dengan point processing, dan kedua adalah mask processing. Jika pada point processing dilakukan operasi terhadap masing-masing piksel, maka pada mask processing dilakukan operasi terhadap suatu jendela ketetanggaan pada citra. Selanjutnya diterapkan (melakukan konvolusi) suatu mask terhadap jendela tersebut.
Salah satu penerapan mask processing adalah median filtering. Median Filtering merupakan salah satu teknik peningkatan kualitas citra dalam domain spasial. Metode ini termasuk dalam kategori non linear filtering. Cara kerjanya hampir sama dengan mean filtering. Pada mean filtering dalam setiap piksel output diatur ke tingkat rata-rata dari nilai-nilai piksel dalam mask yang ditentukan. Namun, dengan median filtering, nilai piksel output ditentukan oleh median dari lingkungan mask yang ditentukan.

Median dicari dengan melakukan pengurutan terhadap nilai piksel dari mask yang sudah ditentukan, kemudian dicari nilai tengahnya. Cara kerjanya dapat dijelaskan sebagai berikut:


Dengan menggunakan citra diatas, diambil 3x3 mask filtering. Nilai masing-masing piksel yang bertetanggaan setelah diurutkan adalah sebagai berikut:
115, 119, 120, 123, 124, 125, 126, 127, 150

Hasil pengurutan tersebut mendapatkan nilai median 124. Nilai median ini digunakan untuk menggantikan nilai pusat mask, sehingga nilai 150 akan diganti dengan 124. Berikut hasil perbandingan beberapa proses median filtering dengan menggunakan noise salt and pepper dengan konstanta 0.1 0.2 0.3 0.4 dan 0.5 dengan menggunakan mask 3x3 dan 9x9.


Tuesday, January 13, 2009

Skrip Matlab untuk Eliminasi Gauss

Eliminasi Gauss adalah salah satu metode yang digunakan untuk menyelesaikan system persamaan linear. Dari sistem persamaan linear yang diketahui, kita buat suatu matrik yang berisi koefisien variabel-variabel yang tidak diketahui beserta konstannya. nah...matrik ini kita ubah menjadi matrik segitiga... dan akhirnya kita ubah lagi menjadi matrik satuan.
Bagaimana caranya? Yakni menggunakan OPERASI ELEMENTER BARIS. Apa pula ini. Kita bisa menjumlahkan/mengurangi suatu baris dengan k kali baris lainnya, dan kita bisa juga kalikan satu baris dengan k. k adalah konstanta real.
Ilustrasinya dapat dilihat sebagai berikut:Dari persamaan diatas kita mendapatkan matrik seperti di bawah ini:
Nah...nantinya matrik tersebut harus kita bawa ke bentuk berikut (Matrik Segitiga).. yang ini kita pilih Matrik Segitiga Atas. Sebenarnya kalo mau Matrik Segitiga Bawah juga bisa... Pokoknya mana yang enak lah....
Berikutnya matrik segitiga tersebut kita buat menjadi matrik diagonal. Akhirnya diubah menjadi matrik satuan.
Berikut ini adalah skrip untuk mengubah matrik menjadi matrik diagonal.

Dan skrip berikut digunakan untuk mengubah matrik diagonal menjadi matrik satuan.

Monday, December 1, 2008

Monday, November 17, 2008

Kompresi Citra Grayscale dengan Algoritma RLE (Run Length Encoding)

Sebelumnya sudah pernah dibahas, metode kompresi dengan algoritma kuantisasi. Algoritma kuantisasi merupakan teknik kompresi yang lossy, artinya banyak informasi dari citra yang hilang, sehingga akan sulit untuk didekompresi kembali.
Nah kalau Algoritma RLE ini merupakan teknik kompresi yang lossless, sehingga kita dengan mudah dapat melakukan dekompresi citra kembali.
Bagaimana algoritma RLE bekerja? Kita coba implementasikan dengan citra grayscale ukuran 6x6 bit (8 derajat keabuan) sebagai berikut:

1 1 1 7 1 3
4 4 6 1 2 2
7 7 7 5 5 5
6 4 4 2 2 2
5 5 2 2 2 1
2 3 3 3 0 0

Kode RLE merupakan pasangan intensitas warna dan banyaknya intensitas warna yang muncul berurutan. Sehingga di dapat kode RLE nya adalah sebagai berikut:
1 3 7 1 1 1 3 1 4 2 6 1 1 1 2 2 7 3 5 3 6 1 4 2 2 3 5 2 2
3 1 1 2 1 3 3 0 2

Cara membaca kode diatas adalah : intensi
tas warna 1 muncul 3 kali, intensitas warna 7 muncul 1 kali, intensitas warna 1 muncul 1 kali, intensitas warna 3 muncul 1 kali,...... dan seterusnya. Cocokkan dengan citra aslinya.
Berikutnya ini adalah source untuk mebuat kod
e RLE tersebut. Seperti biasa dibikinnya pake Matlab.
g adalah citra grayscale yang kita punya. Hasilnya akan ditampung dalam array yang diberi nama rle. Nah karena dapam array rle kita juga menyimpan berapa kali intensitas warna tersebut muncul, maka untuk mendekompresi kembali tentu merupakan perkara yang mudah.

Friday, October 31, 2008

Metode Cramer untuk penyelesaian SPL dengan Matlab

Sebenarnya kalo mau menyelesaikan SPL dengan Matlab, gampang sih....tingal ketikkan tik tik tik...enter... ketemu penyelesaiannya. Beres. Tapi inget kan...dulu kita pernah pelajari Metode Crammer, yang rumusannya seperti ini:
Nah...dari sini dapat kita buat algoritmanya:

Pertama : Masukkan matrik A dan B.

Kedua : Cek dulu ukuran matrik A dan B, matrik A haris bujur sangkar dan B harus matrik kolom yang jumlah barisnya sama dengan A.

Ketiga : Musti dicek juga, determinan matrik A, Karena jika determina matrik A = 0, ya kita gak bisa dapatkan satu penyelesaian dong. Karena bisa jadi ada banyak penyelesaian, dan bisa jadi juga nggak ada penyelesaian.

Keempat: Kita cari matrik A1 sampai dengan Aj berikut determinannya. Setelah itu masing-masing matrik dicari determinannya.

Kelima : Penyelesaian didapat dengan membegi determinan matrik A1 s.d Aj dengan determinan matrik A.

Thursday, September 25, 2008

Membuat Tombol Cancel pada Waitbar dengan Matlab

Yakin deh...pasti udah pada nggak asing lagi. Tapi berhubung udah lama nggak ada apdetan baru...nggak ada salahnya didokumentasikan. Lebih jelas nanti dapat dilihat pada tool help yang tersedia pada Matlab. Contoh sourcenya adalah sebagai berikut:

Waitbar akan nampak secara visual dengan tambahan tombol cancel dibawahnya.


Pada code tertulis 'batal', dimana batal adalah fungsi yang akan dieksekusi jika tombol batal ditekan/diklik.

Monday, June 2, 2008

Belajar C++ (Variabel dan Tipe Data)

<<Materi sebelumnya>>
Variabel merupakan sarana yang digunakan untuk menyimpan data. Nama variabel (identifier) bebas, tetapi harus memperhatikan hal-hal sebagai berikut:

  • tidak boleh ada spasinya
  • tidak boleh mengandung operator aritmatik
  • tidak boleh diawali dengan angka
  • tidak boleh merupakan reserved word dalam bahasa pemrograman.
  • mencerminkan data yang akan disimpan.
Macam-macam tipe data :

Deklarasi variabel
Contoh:

int a;
float b
char n_hrf;
double gaji;
char nama[20];

dsb.

Contoh lain:
int a;
int b;
int c;

dapat disingkat penulisannya menjadi:

int a,b,c;

Sampai jumpa di materi selanjutnya.

Thursday, May 15, 2008

Membaca file teks di Matlab

Jika kita melakukan programing dengam Matlab seringkali kita menggunakan data berupa matrik yang ukurannya besar pada saat mengetes program yang kita buat. Kalau data ini harus diinputkan dari keyboard satu persatu, bayangkan betapa lamanya proses untuk itu. Akan lebih sederhana jika matrik tersebut kita simpan dalam sebuah file teks, yang nantinya dapat kita load sewaktu-waktu.
Contoh:
Buat file text (dengan notepad misalnya) dengan data sebagai berikut:
25 26 67 68 89 79 28
27 24 16 28 29 16 29
23 35 27 28 29 11 12
87 23 56 79 25 67 25
Untuk mengidentifikasi data satu dengan yang lain, dipisah dengan minimal satu spasi. Simpan file dengan nama data1.txt
Untuk mendapatkan data tersebut ketikkan instruksi LOAD dengan format berikut di command window Matlab dan hasilnya dapat dilihat bahwa matrik yang kita punya akan menjadi nilai suatu variabel (misalnya x).
>> x=load('data1.txt')
x =
25 26 67 68 89 79 28
27 24 16 28 29 16 29
23 35 27 28 29 11 12
87 23 56 79 25 67 25
Instruksi diatas kita gunakan jika datanya numerik. Bagaimana jika yang kita simpan dalam file teks adalah berupa string. Jangan kuatir, Matlab menyediakan juga instruksi untuk itu. Salah satunya dapat kita gunakan TEXTREAD.
Contoh:
Buat file teks dengan data string berikut:
Ini adalah contoh pesan yang dituliskan dalam file teks. Akan dicoba untuk membaca file ini dengan Matlab
Simpan dengan nama pesan.txt
Untuk mendapatkan kembali data tersebut ketikkan instruksi TEXTREAD dengan format berikut, melalui command window di Matlab.
>> n=textread('pesan.txt','%s')
n =
'Ini'
'adalah'
'contoh'
'pesan'
'yang'
'dituliskan'
'dalam'
'file'
'teks.'
'Akan'
'dicoba'
'untuk'
'membaca'
'file'
'ini'
'dengan'
'Matlab'
Untuk format file yang lain bisa diposting lagi lain waktu. Ok...

Friday, May 9, 2008

Belajar C++ (Struktur program)

Contoh program pada materi berikut dapat dijalankan dengan Borland C++ (turbo C++ juga boleh). Secara umum struktur program dalam C++ adalah sebagai berikut:
deklarasi header file/preprocessor
deklarasi konstanta
deklarasi var global
deklarasi fungsi
deklarasi class
program utama (fungsi utama)
main() {
……
……
}
Keterangan :
Deklarasi header file diawali dengan #include <.......> atau #include "........." Titik-titik diisi dengan nama header file yang ingin digunakan. Header file merupakan suatu fungsi yang mendukung eksekusi instruksi tertentu dalam C++
Deklarasi konstanta (bisa ada bisa tidak)
Deklarasi variabel global (bisa ada bisa tidak)
Deklarasi fungsi bisa ada bisa tidak. Fungsi juga dapat diletakkan seletah fungsi main().
Deklarasi class (bisa ada bisa tidak)
Fungsi utama, harus ada, diawali dengan { dan diakhiri dengan }. Didalamnya berisi instruksi-instruksi yang nantinya akan dieksekusi berikut deklarasi variabel (variabel lokal) yang diperlukan.

Beberapa header file yang sering digunakan :
iostream.h
Untuk instruksi:
cout<<”.....................”; cin>>nama_var;

conio.h
Untuk instruksi:
getch();
clrscr();

Instruksi untuk memindah cursor dibaris berikut:
”\n”
<<endl; Menuliskan komentar : // Jika komentar hanya satu baris /*.....*/ Sangat berguna jika komentar lebih dari satu baris. C++ bersifar case sensitive à membedakan huruf besar dan huruf kecil, sehingga: instruksi harus ditulis dalam huruf kecil Variabel yang ditulis dengan huruf kecil dan huruf besar berbeda. Contoh program : Contoh pertama berikut akan menampilkan teks Belajar C++ di layar.


//ini contoh pertama
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++"; getch(); }
//ini contoh kedua
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++";
cout<<"Media Belajar";
cout<<"Pemrograman Dasar";
getch(); }

Contoh kedua diatas akan menampilkan tulisan sesuai dengan yang diapit tanda petik dan ditampilkan dalam satu baris

Contoh ketiga berikut akan menampilkan tulisan sesuai dengan yang diapit tanda petik dan ditampilkan dalam tiga baris

//ini contoh ketiga
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++\n";
cout<<"Media Belajar\n";
cout<<"Pemrograman";
getch(); }


Contoh
keempat akan memberikan output sama dengan contoh tiga.
//ini contoh keempat
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++"<<endl;
cout<<"Media Belajar"<<endl;
cout<<"Pemrograman Dasar"<<endl;
getch(); }


Coba tebak...output dari contoh kelima berikut.

//ini contoh kelima
/* Pengggunaan \n
untuk mengatur tampilan */
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar\n C++\n";
cout<<"\nMedia Belajar";
cout<<"\nPemrograman\nDasar"; getch(); }


Sampe jumpa di materi selanjutnya......

Tuesday, April 15, 2008

Membaca file gambar dengan Java

Script berikut digunakan untuk membaca file gambar dan menampilkan ke suatu frame. Untuk membaca file menggunakan imageIO. Gambar akan terbaca dan tersimpan ke variabel image. Variabel image berisi informasi yang terkandung pada file gambar yang dibaca.
Berikut ini script yang digunakan untuk membaca gambar :

Outputnya sebagai berikut :

Nah...kalo yang ini adalah isi dari variabel image :

Hal lain yang ingin aku bikin adalah, gimana caranya agar informasi tentang derajat keabuan citra (untuk citra grayscale), ataupun nilai RGB (untuk citra RGB) bisa didapat? Wah kalo yang ini harus belajar lagi nih....

Monday, March 31, 2008

OOP dengan Java

Selama ini kalau untuk OOP aku selalu menggunakan C++. Pingin juga sih tau yang lainnya....tapi brubung waktu buat belajar gak banyak lagi....so kalau gak karena kebutuhan ya gak bakalan belajar...he...he.
Nah, kebetulan dalam waktu dekat ini karena kebutuhan, mendorong aku belajar mengenai OOP dengan Java. Yah...apa boleh buat...dengan males-malesan mulailah aku belajar. Dan ternyata.....menuariiikkkkk banget loh. Gak terlalu jauh dengan C++...malah kalo menurutku sih Java ini lebih mudah dibandingkan C++. Mumpung di kantor agak longgar waktunya, jadi aku bisa punya banyak waktu buat belajar. Beberapa yang sudah aku pelajari antara lain:
Instalasi Compilernya.
Aku install Java 2 SDK 5.0. Masternya aku dapet dari temen, soalnya waktu mo download lama banget. Apdet terbarunya sih udah ada, tapi buat belajar ini aja dah cukup lah. Habis itu seting path dan classpath.
Penerapan konsep OOP di Java(beserta contoh-contoh tentunya)
Di C++ ada tipe casting, di Java juga ada. Struktur classnya, gak beda jauh sama C++. Proteksi member class, ada private protected dan public. Kalo yang ini juga sama. Kalo di C++ ada konsep buat melakukan overload operator, di Java juga bisa. Di C++ ada konsep friend class, di Java secara spesifik ditulis friend sih gak ada, karena class-class yang ada pada file class yang sama ya langsung dianggap friend. Konsep inheritance juga sama. Trus kalo di C++ ada Multiple inheritance, di Java kayaknya gak ada. Waktu pake C++ juga jarang kepake sih... aku ngelihatnya kok malah menimbulkan pemahaman ganda (ambigu gitu). Class abstract juga ada di Java
Nah baru nyampe sini aja belajarnya. Kalau ada yang salah....tolong dikoreksi yah... Mo lanjut blajar lagi ah... kali ini masuk ke GUInya. Yang pake java.awt or javax.swing itu tuh.

Tuesday, February 19, 2008

Resize citra

Konsepnya sih sederhana, cuma mengurangi/menambah jumlah piksel yang menyusun citra. Pengurangan/ penambahan dilakukan secara proporsional baik pada panjang maupun lebar citra.

Berikut ini adalah code untuk memperkecil citra:



















Yang ini adalah code untuk memperbesar citra:
















Yang ini adalah citra asal 300 x 225 piksel:



Kalo yang ini setelah diperkecil menjadi 40x30 piksel



Terakhir adalah citra 40x30 piksel dibesarkan kembali menjadi 300x225 piksel :



Tuesday, January 15, 2008

Embeded pesan teks dengan metode EOF

Pada postingan terdahulu pernah dilakukan embeded pesan teks tetapi dengan metode LSB (Least Significat Bit). Kelebihan metode ini adalah ukuran citra tidak berubah, sedangkan kekurangannya, pesan teks yang dapat disisipkan terbatas.
Agar pesan teks yang disisipkan bisa lebih besar,
dapat menggunakan metode lain yakni EOF (end of file), dimana pesan akan ditambahkan pada akhir file gambar. Misalnya kita mempunyai file citra 120 x 160 piksel. Maka pesan akan ditempatkan pada baris ke 121 sampai selesai tergantung ada berapa karakter pesan teks yang akan disisipkan. Setiap baris akan memetakan pesan sebanyak 160 karakter (sesuai dengan ukuran citra).
Karena pesan ditambahkan pada akhir file gambar, maka ukuran citra yang didapat akan lebih besar dari citra asal. Tentunya, hal ini akan menimbulkan kecurigaan. Karena i
tu diusahakan agar pesan yang disisipkan tidak terlalu mempengaruhi ukuran citra.
Agar looping dalam source code nggak terlalu banyak.....(biar cepet), maka (lagi-lagi) menggunakan citra grayscale. Di bawah ini diberikan citra sebelum dan setelah disisipi pesan.
Citra sebelum disisipi pesan

Citra setelah disisipi pesan

Citra asal berukuran 150x200 piksel. Pesan yang disisipkan ada 422 karakter. Ukuran citra setelah disisipkan menjadi 153x200, dengan kata lain 422 karakter yang ada memakan tempat sebanyak 3 baris. Oleh karena itu, jika kita perhatikan pada citra setelah disisipi pesan, akan nampak seperti "garis-garis" tambahan dibagian paling bawah citra.