Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Wednesday, January 30, 2013

Belajar baca dan tulis file excel dengan MATLAB

Berikut ini adalah tutorial membaca dan menulis file excel dengan MATLAB. Sebenarnya ada cara lain yang lebih bagus. Cuma anda boleh menggunakan cara ini sebagai perbandingan. Kendatipun hakikatnya intinyapun sama (menggunakan ActiveX ).

Tuesday, January 29, 2013

Belajar GUI di MATLAB

Pada tulisan kali ini saya akan memberikan sebuah tutorial sederhana mengenai pemrogaraman GUI di MATLAB. Kebetulan ini tutorial pertama tentang GUI, jadi saya ambil satu contoh familiar yakni bagaimana memplot fungsi sinusoidal dengan GUI. Sebenarnya kalo anda ingin pahami benar bagaimana GUI di MATLAB bekerja, ada baiknya jangan gunakan GUIDE (gui builder default). MEndingan langsung koding langsung dari scriptnya. Di samping membantu pemahaman anda ---- khususnya jika GUI yang dibuat makin rumit ---- juga memperkuat ingatan. Kata teman saya, dengan menulis maka ingatan kita tentang sesuatu semakin bagus.
Biar lebih paham, silakan copy-paste source berikut ke komputer anda, dan langsung dijalankan. Kebetulan pada komennya sudah diberikan penjelasannya.

function runGUI
% dibuat oleh Mohammad Fajar pada malam selasa (29/1/2013)
clc;
init();
% dalam GUI matlab, container kedua tertinggi adalah figure... 
% yang pertama tertinggi  adalah root yang merupakan  monitor
fig = ... 
    figure('name', 'Test Sin', ...
         'numbertitle', 'off', ...
         'position' , [200, 100, 500,500], ...% relatif terhadap 
         'menubar' , 'none'  ...              % monitor
         );
     
% panel yang digunakan untuk memanajemen control-control 
panel_control =  uipanel( ...
        'title', 'Control Panel', ...
        'units', 'pix', ...
        'fontsize', 12, ...
        'backgroundcolor', 'white', ... 
        'position',[10 10 480 100] ...  % relatif terhadap 'fig'
        );

buttonStart = uicontrol('units','pix',...
          'style','pushbutton',...
          'parent', panel_control, ...
          'position',[10 10  90 25],...  % relatif terhadap 'panel_control'
          'fontweight','bold',...
          'fontsize',12,... 
          'string','draw',...
          'HorizontalAlignment' , 'right', ...
          'callback',@start ...  % memanggil fungsi 'start' 
          );
      
% untuk button ini kita akan gunakan unit centimeter...
% sementara pada button sebelumnya (button start) yang digunakan adalah
% unit pixels (atau disingkat 'pix'  ==> dalam matlab terdapat kemudahan
% dengan menggunakan singkatan)
% cuma saya bingung yang mana bisa disingkat, yang mana tidak...
% demi amannya mending g usa disingkat..... 
buttonPause  = uicontrol('units', 'centimeters', ...
            'style', 'pushbutton',... 
            'parent' , panel_control , ... 
            'position', [ .24  1.0   2.5   .7], ...  % rel. terhadap 'panel_control'
            'fontsize', 12, ...
            'fontweight', 'bold', ...
            'string', 'delete', ...
            'HorizontalAlignment', 'left', ... 
            'callback', @pause );  % memanggil fungsi 'pause' 
        
% ingat parameter-parameter pada MATLAB selain bisa disingkat juga tidak
% mengenal case-sensitiv ... alias tidak peduli huruf besar atau huruf
% kecil .... jadi 'Position' atau 'posiTion' hasilnya sama saja...
% sepanjang hurufnya tidak kurang atau lebih.... 


% selanjutnya akan dibuat panel untuk memanajemen daerah plotting 
panel_plot = uipanel('title', 'plot area', ...
            'units', 'pix', ...
            'positioN', [10 120 480 370] , ...
            'backgrounDcolor', 'cyan', ...
            'fontsize', 12);

% sekarang tambahkan plot area 
% saya ga' tau kenapa, yang jelas untuk object "axis" tidak dibolehkan 
% untuk menggunakan units selain 'inch'
global g;
g =axes('position',[.1  .1  .86  .87], ...
        'xlim', [0 (2*pi)], ... 
        'parent', panel_plot);
% mesh(peaks(20));
end

function init()
global x;
x = linspace(0,2*pi , 400 );
end 

function []  = start(varargin)
global x;
global hline;
hline = plot(x,sin(x));
end

function [] =  pause(varargin)
% gunanya untuk menghapus plotting 
cc = get(gcf, 'CurrentAxes');
aa = get(cc, 'Children');
delete(aa);
end