Tag Archives: scilab

Last updated by at .

Measuring the response of the electric water heater using the Arduino

This post describes how to measure the response of the electric water heater using the Arduino. By using simple program on the Arduino is very simple to read the output of the temperature response. Arduino has a 10bit ADC accuracy is used to read the output of the LM35 temperature sensor.

The output voltage of the LM35 sensor is amplified using the LM358 with a voltage gain of 5.47. While the output voltage of the LM35 is 10mV per degree centigrade. So the total output voltage LM398 is 5.47x10mV = 54.7mV per degree centigrade.

Arduino simple program are as follows: 

To read the temperature using the Arduino ADC channel 0 (A0). Results of ADC convertion is sent in serial with baudrate of 115200baud. By using hyperterminal program, the conversion result is stored in a file in text format form. 

 Measurement steps

  1. Upload arduino program to arduino board
  2. Fill water with water and setup the water flow about 6ml/sec
  3. Connect output of temperature sensor to A0 of arduino
  4. Run hyperterminal and setup the filename to capture data
  5. Start no power on elektric heater for some seconds
  6. Start power of electric heater for some minutes
  7. Remove power of electric heater for some minutes
  8. Stop hyperterminal
  9. Graph the results using scilab

The result of temperature outputs can be downloaded here.

Graph the results using scilab 

 By using the Scilab command in the console such as the following, the response will be obtained graphically.

// read file
-->sh=read_csv("D:\TA\AFRI\PENGUJIAN\capture1.txt");

// convert to matrix
-->d=evstr(sh);

// check size of matrix
-->size(d)
 ans  =

    2652.    1.  

// make matrix of time with sampling about 2ms
-->t=0:0.002:2651*0.002;

// check size t matrix must same with d matrix
-->size(t)
 ans  =

    1.    2652.  

// convert to voltage, fullscale of adc = 5Volt
-->v=(d/1024)*5;

// convert to output voltage of LM35
-->v_sensor=v/5.47;

// convert to exact temperature with 10mv per centigrade
-->tc=(v_sensor*1000)/10;

// plot data
-->plot2d(t,tc,style=5)
-->xgrid()

-->title("Step Responses of Water Heater")

-->xlabel("Number of Samplings")

-->xlabel("Time in second")

-->ylabel("Temperature of water heater fluid (centigrade)")

 

Posted in Electronics | Tagged , , , | Leave a comment

Scilab code: transfer function and performance of control systems using DC Motor Model

This post contains the simple code written for Scilab, associated with the modeling of permanent magnet dc motor. The code of this program are made by me and is for all who need it. So is open source, you can modify as appropriate. Do not forget you also include my name and my website link in your application or website, and do not forget me say thank you.

Source Code 1

Download

 DC motor used is a permanent magnet, with the default parameters are:

  1. Moment of inertia of the rotor: 
  2. Electromotive force constant:  
  3. Damping ratio of the mechanical system:
  4. Electric resistance:
  5. Electric inductance: 

If you want another dc motor parameters, please edit that variable in the source program.  Enter the parameters of the control constants Kp, Ki, and Ki, then the dc motor transfer function and the total transfer function of each controller P,  PI, PD and PID will be displayed.

Also, the graphics performance of the control system for each controllers P, PI, PD and PID will be generated.

 

 

Posted in Program | Tagged , , | Leave a comment

Belajar Scilab: operasi matrik

Isi materi ini ditujukan untuk berbagi ilmu pengetahuan kepada semua pengunjung blog ini.
Silakan digunakan untuk kepentingan proses pembelajaran untuk mencerdaskan bangsa ini dengan tidak lupa menyebutkan sumbernya.
Namun yang harus dihidari adalah: mengambil isi dengan mengakui sebagai haknya, mengambil isi untuk tujuan komersialisasi.
Semua tergantung kepada hati-nurani, jika terjadi saya berkewajiban mengingatkan para plagiator. Biasakan sesuatunya terlahir dari tangan anda, itu menunjukkan bahwa anda ada dan anda diberi hidayah sebagai ciptaanNya yang paling mulia untuk memberikan manfaat di dunia ini. Biasakanlah memberikan manfaat kepada orang lain, dan jangan membiasakan memanfaatkan orang lain.

Sebagai kelanjutan yang telah diposting disini, selanjutnya adalah bagaimana pengoperasikan matrik yang sering digunakan dalam metode komputasi.

Sebelumnya mendefinisikan data matrik orde 3×4 dengan variabel M diisi nilai acak:

-->M=rand(3,4)
 M  =

    0.0485566    0.3911574    0.4829179    0.1205996
    0.6723950    0.8300317    0.2232865    0.2855364
    0.2017173    0.5878720    0.8400886    0.8607515 

Medifinisakan matrik variabel N, orde 4×3:

-->N=[3 1 5; 3.2 3.7 6; 9 1 2; 2.3 5.6 6.5]
 N  =

    3.     1.     5.
    3.2    3.7    6.
    9.     1.     2.
    2.3    5.6    6.5  

Operasi perkalian

Perlu diingat, jumlah kolom pengali harus sama jumlah baris yang dikalikan:

-->MN=M*N
 MN  =

    6.0210139    2.6541146    4.3394607
    7.3395985    5.5658025    10.644725
    12.026868    8.0371405    11.81088

Hasil perkalian menghasilkan matrik orde 3×3 di variabel MN.

Penjumlahan Matrik

Variabel M dan MN akan dijumlahkan, namun orde M=3×4 sedangkan MN=3×3. Matrik MN yang akan dijumlahkan adalah baris 1..3 dengan menggunakan operasi M(1:3,1:3).

-->M*MN
    !--error 10
Inconsistent multiplication.

-->M
 M  =

    0.0485566    0.3911574    0.4829179    0.1205996
    0.6723950    0.8300317    0.2232865    0.2855364
    0.2017173    0.5878720    0.8400886    0.8607515  

-->M(1:3,1:3)
 ans  =

    0.0485566    0.3911574    0.4829179
    0.6723950    0.8300317    0.2232865
    0.2017173    0.5878720    0.8400886  

-->P=M(1:3,1:3)+MN
 P  =

    6.0695706    3.045272     4.8223786
    8.0119935    6.3958342    10.868011
    12.228585    8.6250125    12.650969  

Perintah pertama M*MN terdapat pesan kesalahan karena ordenya tidak cocok. Kedua melihat isi matrik M, dan ketiga melihat isi matrik M baris 1 sampai 3. Terakhir P diisi dengan hasil penjumlahan matrim M baris 1 sampai 3 dengan matrik MN.

Matrik Transpose

Untuk memperoleh matrik transpose, menggunakan matlab sangat mudah dilakukan. Berikut ini hasil matrik transpose dari matrik P disimpan dalam P1.

-->P1=P'
 P1  =

    6.0695706    8.0119935    12.228585
    3.045272     6.3958342    8.6250125
    4.8223786    10.868011    12.650969  

Matrik Inverse

Selanjutnya P2 disini dengan matrik inverse P1, perintahnya sebagai berikut:

-->P2=inv(P1)
 P2  =

    0.4988561  - 1.2270212    0.3543420
  - 0.1193309  - 0.6930515    0.5878464
  - 0.0876441    1.0631006  - 0.5610236 

Pembagian Matrik

Berikutnya pembagian matrik antara P1 dan P2, hasilnya disimpan di P3.

-->P3=P1/P2
 P3  =

    120.20925    232.77314    298.02925
    79.553624    159.04213    201.51828
    123.37358    245.63773    312.75461  

Pangkat

Berikut ini P4 diisi dengan matrik P3 dipangkat 2.

-->P4=P3^2
 P4  =

    69737.146    138209.45    175943.94
    47077.49     93312.837    118784.97
    72957.671    144609.13    184084.87  

Juga dapat dilakukan P3 dipangkat dengan sebuah operasi lainnya, seperti berikut ini.

-->P3^sin(0.7*%pi)
 ans  =

    36.58        67.906238    87.765825
    23.336135    47.486817    59.493362
    36.231832    72.66662     92.731514  

to be continue

Posted in Program open source, scilab | Tagged , , | Leave a comment

Belajar Scilab: pengantar matrik

Isi materi ini ditujukan untuk berbagi ilmu pengetahuan kepada semua pengunjung blog ini.
Silakan digunakan untuk kepentingan proses pembelajaran untuk mencerdaskan bangsa ini dengan tidak lupa menyebutkan sumbernya.
Namun yang harus dihidari adalah: mengambil isi dengan mengakui sebagai haknya, mengambil isi untuk tujuan komersialisasi.
Semua tergantung kepada hati-nurani, jika terjadi saya berkewajiban mengingatkan para plagiator. Biasakan sesuatunya terlahir dari tangan anda, itu menunjukkan bahwa anda ada dan anda diberi hidayah sebagai ciptaanNya yang paling mulia untuk memberikan manfaat di dunia ini. Biasakanlah memberikan manfaat kepada orang lain, dan jangan membiasakan memanfaatkan orang lain.

Dalam scilab matrik merupakan variabel array yang memiliki jumlah baris dan kolom sesuai dengan kebutuhan. Perlakuan matrik dalam scilab sangatlah mudah. Disini akan dijelaskan dasar-dasar bagaimana memperlakukan matrik dalam scilab.

Ada beberapa cara untuk memasukkan nilai dalam variabel matrik yaitu:

  1. Pisahkan setiap elemen baris matrik dengan spasi atau koma (,)
  2. Pisahkan setiap elemen baris matrik denga karakter titik koma (;)
  3. Letakkan seluruh elemen matik dalam sepasang kurung persegi ([])

Misalkan akan memberi nilai dalam matrik persegi orde 3×3 dan dimasukkan dalam variabel M:

-->M=[2 12 3; 1 2 8; 5 16 11]
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11. 

Atau dapat anda masukkan dengan cara:

-->M=[2,12,3; 1,2,8; 5,16,11]
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

Menghitung jumlah Dalam matrik persegi mungkin ingin menghitung jumlah elemen kolom dan jumlah elemen baris dan jumlah elemen diagonal. Hal ini dapat dilakukan dengan cara:

-->sum(M,'c')
 ans  =

    17.
    11.
    32.  

-->sum(M,'r')
 ans  =

    8.    30.    22.
 

Jumlah diagonal utama, mudah dilakukan dengan menggunakan fungsi ‘diag’:

-->diag(M)
 ans  =

    2.
    2.
    11. 

Mengisi matrik dengan nilai random

-->MR=rand(3,3)
 MR  =

    0.2615761    0.5253563    0.2256303
    0.4993494    0.5376230    0.6274093
    0.2638578    0.1199926    0.7608433

-->sum(MR,'c')
 ans  =

    1.0125628
    1.6643817
    1.1446937  

-->sum(MR,'r')
 ans  =

    1.0247834    1.1829718    1.6138829  

Menambah baris matrik

Untuk menambah baris matrik yaitu dengan menambah elemen baris dengan kolom yang sama dari matrik yang akan ditambahkan. Matrik yang lama dimasukkan kembali ke elemen matrik deng ditambahkan karakter ;, karena akan menambahkan baris.

-->M
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

-->M=[M; 34 10 33]
 M  =

    2.     12.    3.
    1.     2.     8.
    5.     16.    11.
    34.    10.    33.  

Subscript

Setiap elemen dalam matrik ditandai dengan subscript nomer baris dan kolom, cara penulisannya adalah: M(b,k), dengan menuliskan nama matrik diikuti dengan , didalam kurung ().

Berikut ini salah satu contoh untuk menghitung jumlah diagonal yang lain (elemen kanan atas ke kiri bawah),  dengan  menggunakan subscript matrik:

-->M(1,3)+M(2,2)+M(3,1)
 ans  =

    10.  

Menghapus baris matrik

Untuk menghapus matrik baris terakhir yaitu dengan cara:

-->M
 M  =

    2.     12.    3.
    1.     2.     8.
    5.     16.    11.
    34.    10.    33.  

-->M=[M(1:3,1:3)]
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

Cara diatas dengan menggunakan operator semi-kolon (:) seperti yang dijelaskan dibawah.

Cara lain dimungkinkan untuk mengakses elemen dalam matrik menggunakan indek tunggal. Sekarang matrik M telah menjadi matrik orde 4×3. Sehingga M(1) = M(1,1), M(2) = M(2,1), M(3) = M(3,1), M(4) = M(4,1), M(5) = M(1,2), M(6) = M(2,2), dan seterusnya.

Sebuah cara cerdas untuk mendapatkan jumlah diagonal yang lain adalah dari matrik M, dengan menggunakan fungsi mtlb_fliplr , di mana mtlb singkatan Matlab. Berikut ini ini adalah untuk flip matriks kiri ke kanan (lr):

-->M
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

-->ML=mtlb_fliplr(M)
 ML  =

    3.     12.    2.
    8.     2.     1.
    11.    16.    5.  

-->MD=diag(ML)
 MD  =

    3.
    2.
    5.  

-->sum(MD,'r')
 ans  =

    10. 

Cara singkat dari cara diatas adalah:

-->sum(diag(mtlb_fliplr(M)))
 ans  =

    10. 

 Operator Kolon

Operator kolon (:) memegang peranan penting dalam scilab. Ekpresi 1:12 menghasilkan matrik baris dengan elemen 1,2,3,4…12.

-->1:12
 ans  =

    1.    2.    3.    4.    5.    6.    7.    8.    9.    10.    11.    12.  

Untuk menghasilkan elemen mulai 20 sampai 4 dengan petambahan nilai menurun 2, dapat dituliskan sebagai berikut:

-->20:-2:4
 ans  =

    20.    18.    16.    14.    12.    10.    8.    6.    4.  

Dengan menggunakan operator kolon inipun, dapat mengambil elemen matrik tertentu. Sebagai contoh, untuk mengambil baris kedua saja:

-->M
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

-->M(2,:)
 ans  =

    1.    2.    8. 

Berikut ini contoh untuk mengambil baris 1 dan 3 saja.

-->M([1,3],:)
 ans  =

    2.    12.    3.
    5.    16.    11.  

Contoh lagi untuk mengambil elemen acak, hasilnya menjadi matrik 1 baris.

-->[M(2,1) M(3,3) M(1,2)]
 ans  =

    1.    11.    12.  

Sama dengan diatas namun hasilnya sebagai matrik kolom.

-->[M(2,1); M(3,3); M(1,2)]
 ans  =

    1.
    11.
    12.

Operator $ adalah nilai terbesar indek matrik, ini berguna untuk mendapatkan entri terakhir dari vektor atau matrik. Berikut ini contoh untuk mengakses semua elemen kolom terakhir kecuali kolom terakhir dari baris terakhir, kita ketik:

-->M
 M  =

    2.    12.    3.
    1.    2.     8.
    5.    16.    11.  

-->M(1:$-1,$)
 ans  =

    3.
    8.  
Posted in Program open source, scilab | Tagged , , | Leave a comment

Belajar Scilab: membaca file microsoft excel (cara 3)

Isi materi ini ditujukan untuk berbagi ilmu pengetahuan kepada semua pengunjung blog ini.
Silakan digunakan untuk kepentingan proses pembelajaran untuk mencerdaskan bangsa ini dengan tidak lupa menyebutkan sumbernya.
Namun yang harus dihidari adalah: mengambil isi dengan mengakui sebagai haknya, mengambil isi untuk tujuan komersialisasi.
Semua tergantung kepada hati-nurani, jika terjadi saya berkewajiban mengingatkan para plagiator. Biasakan sesuatunya terlahir dari tangan anda, itu menunjukkan bahwa anda ada dan anda diberi hidayah sebagai ciptaanNya yang paling mulia untuk memberikan manfaat di dunia ini. Biasakanlah memberikan manfaat kepada orang lain, dan jangan membiasakan memanfaatkan orang lain.

Posting yang saya tulis disini dan yang ditulis disini, merupakan cara membaca data dalam bentuk format microsoft excel dengan ektensi .xls. Selain itu microsoft excel juga dapat membaca dalam bentuk format yang berektensi .csv dari singkatan comma separated value. Format ini sebenarnya adalah format text, dimana setiap satu record data dipisahkan dengan karakter koma antara masing-masing fieldnya. Sedangkan untuk record berikutnya dituliskan di baris berikutnya atau dipisahkan dengan karakter .

Jika anda memiliki file dengan ektensi .xls, melalui microsoft excel dapat di simpan sebagai file dengan ektensi .csv, kemudian datanya dapat dibaca oleh scilab melalui cara yang akan dibahas disini. Agar dapat dibandingkan dengan posting sebelumnya, digunakan file excel yang sama seperti berikut ini.

Setelah disimpan dalam format dengan ektensi .csv, akan diperoleh file format text sebagai berikut:

0.2113249,0.5608486,0.3076091,0.5015342,0.2806498,Bambang Siswoyo,Pria
0.7560439,0.6623569,0.9329616,0.4368588,0.1280058,Ekoyanto Pudjiono,Pria
0.0002211,0.7263507,0.2146008,0.2693125,0.7783129,Nurhidayat,Pria
0.3303271,0.1985144,0.312642,0.6325745,0.211903,Ana Safitri,Wanita
0.6653811,0.5442573,0.3616361,0.4051954,0.1121355,Wijono,Pria
0.6283918,0.2320748,0.2922267,0.9184708,0.6856896,Masruri,Pria
0.8497452,0.2312237,0.5664249,0.0437334,0.1531217,Mochammad Rusli,Pria
0.685731,0.2164633,0.4826472,0.4818509,0.6970851,Ive Emaliana,Wanita
0.8782165,0.8833888,0.3321719,0.2639556,0.8415518,Ari Wahjudi,Pria
0.068374,0.6525135,0.5935095,0.4148104,0.4062025,M. Aswin,Pria

Fungsi yang akan digunakan untuk membaca file dengan format csv dalam scilab adalah:

read_csv() — write_csv()

Dengan fungsi diatas  data dapat saling dipertukarkan antara excel dan scilab sesuai dengan kebutuhan.

Berikut ini bagaimana file text dengan format csv dibaca dengan scilab:

-->-->sh=read_csv("d:/data_scilab/data1.csv")
 sh  =

!0.2113249 0.5608486 0.3076091 0.5015342  0.2806498  Bambang Siswoyo  Pria  !
!                                                                           !
!0.7560439 0.6623569 0.9329616 0.4368588  0.1280058 Ekoyanto Pudjiono Pria  !
!                                                                           !
!0.0002211 0.7263507 0.2146008 0.2693125  0.7783129 Nurhidayat        Pria  !
!                                                                           !
!0.3303271 0.1985144 0.312642  0.6325745 0.211903  Ana Safitri        Wanita!
!                                                                           !
!0.6653811 0.5442573 0.3616361 0.4051954 0.1121355 Wijono             Pria  !
!                                                                           !
!0.6283918 0.2320748 0.2922267 0.9184708 0.6856896 Masruri            Pria  !
!                                                                           !
!0.8497452 0.2312237 0.5664249 0.0437334 0.1531217 Mochammad Rusli    Pria  !
!                                                                           !
!0.685731  0.2164633 0.4826472 0.4818509 0.6970851 Ive Emaliana       Wanita!
!                                                                           !
!0.8782165 0.8833888 0.3321719 0.2639556 0.8415518 Ari Wahjudi        Pria  !
!                                                                           !
!0.068374  0.6525135 0.5935095 0.4148104 0.4062025 M. Aswin           Pria  !

Dengan perintah diatas seluruh data dalam format csv, disimpan dalam matrik divariabel sh sesuai dengan ukuran yang sama jika dibaca dengan microsoft excel.

Selanjutnya jika anda ingin menyimpannya kembali kedalam format .csv, digunakan fungsi write_csv(). Agar terdapat perubahan data, saya akan menambahkan satu data lagi dengan menggunakan scilab

Karena variabel sh adalah cell, jadi penambahan data diperlakukan sebagai cell dengan perintah berikut ini:

-->sh(11,1:7)=['0.62772' '0.92882' '0.2333' '0.827726' '0.366353'
   'Joko Suwarto Utomo' 'Pria']
 sh  =

!0.2113249 0.5608486 0.3076091 0.5015342  0.2806498  Bambang Siswoyo  Pria  !
!                                                                           !
!0.7560439 0.6623569 0.9329616 0.4368588  0.1280058 Ekoyanto Pudjiono Pria  !
!                                                                           !
!0.0002211 0.7263507 0.2146008 0.2693125  0.7783129 Nurhidayat        Pria  !
!                                                                           !
!0.3303271 0.1985144 0.312642  0.6325745 0.211903  Ana Safitri        Wanita!
!                                                                           !
!0.6653811 0.5442573 0.3616361 0.4051954 0.1121355 Wijono             Pria  !
!                                                                           !
!0.6283918 0.2320748 0.2922267 0.9184708 0.6856896 Masruri            Pria  !
!                                                                           !
!0.8497452 0.2312237 0.5664249 0.0437334 0.1531217 Mochammad Rusli    Pria  !
!                                                                           !
!0.685731  0.2164633 0.4826472 0.4818509 0.6970851 Ive Emaliana       Wanita!
!                                                                           !
!0.8782165 0.8833888 0.3321719 0.2639556 0.8415518 Ari Wahjudi        Pria  !
!                                                                           !
!0.068374  0.6525135 0.5935095 0.4148104 0.4062025 M. Aswin           Pria  !
!                                                                           !
!0.62772   0.92882   0.2333    0.827726  0.366353  Joko Suwarto Utomo Pria  !

Selanjutnya data tersebut dapat disimpan kembali kedalam format csv dengan nama file data2.csv dengan perintah sebagai berikut:

write_csv(sh, "d:/data_scilab/data2.csv", ",")

Parameter pertama adalah nama variabel dari cell (sh), kedua adalah direktori dan nama file, ketiga adalah separatornya adalah karakter koma. Setelah dibaca oleh microsoft excel akan nampak sebagai berikut:

Sekian mudah-mudahan bermanfaat.

Posted in Program open source, scilab | Tagged , , | 7 Comments

Belajar Scilab: membaca file microsoft excel (cara 2)

Isi materi ini ditujukan untuk berbagi ilmu pengetahuan kepada semua pengunjung blog ini.
Silakan digunakan untuk kepentingan proses pembelajaran untuk mencerdaskan bangsa ini dengan tidak lupa menyebutkan sumbernya.
Namun yang harus dihidari adalah: mengambil isi dengan mengakui sebagai haknya, mengambil isi untuk tujuan komersialisasi.
Semua tergantung kepada hati-nurani, jika terjadi saya berkewajiban mengingatkan para plagiator. Biasakan sesuatunya terlahir dari tangan anda, itu menunjukkan bahwa anda ada dan anda diberi hidayah sebagai ciptaanNya yang paling mulia untuk memberikan manfaat di dunia ini. Biasakanlah memberikan manfaat kepada orang lain, dan jangan membiasakan memanfaatkan orang lain.

Seperti yang telah diposting disini, sekarang akan dijelaskan cara yang lainnya dengan menggunakan fungsi:

readxls()

Adapun data file microsoft excel, menggunakan file excel yang sama dengan sebelumnya agar dapat dibandingkan dengan cara sebelumnya. Data tersebut sebagai berikut:

Untuk membaca data file excel digunakan perintah sebagai berikut:

-->sheets = readxls("d:/data_scilab/data1.xls");

-->typeof(sheets)
 ans  =

 xls   

-->s1 = sheets(1);

-->s1
 s1  =

!0.2113249 0.5608486 0.3076091 0.5015342 0.2806498 Bambang Siswoyo    Pria    !
!                                                                             !
!0.7560439 0.6623569 0.9329616 0.4368588 0.1280058 Ekoyanto Pudjiono  Pria    !
!                                                                             !
!0.0002211 0.7263507 0.2146008 0.2693125 0.7783129 Nurhidayat         Pria    !
!                                                                             !
!0.3303271 0.1985144 0.312642  0.6325745 0.211903  Ana Safitri        Wanita  !
!                                                                             !
!0.6653811 0.5442573 0.3616361 0.4051954 0.1121355 Wijono             Pria    !
!                                                                             !
!0.6283918 0.2320748 0.2922267 0.9184708 0.6856896  Masruri           Pria    !
!                                                                             !
!0.8497452 0.2312237 0.5664249 0.0437334 0.1531217  Mochammad Rusli   Pria    !
!                                                                             !
!0.685731  0.2164633 0.4826472 0.4818509 0.6970851  Ive Emaliana      Wanita  !
!                                                                             !
!0.8782165 0.8833888 0.3321719 0.2639556 0.8415518  Ari Wahjudi       Pria    !
!                                                                             !
!0.068374  0.6525135 0.5935095 0.4148104 0.4062025  M. Aswin          Pria    !

-->s1.value()
 ans  =

    0.2113249    0.5608486    0.3076091    0.5015342    0.2806498    Nan   Nan
    0.7560439    0.6623569    0.9329616    0.4368588    0.1280058    Nan   Nan
    0.0002211    0.7263507    0.2146008    0.2693125    0.7783129    Nan   Nan
    0.3303271    0.1985144    0.312642     0.6325745    0.211903     Nan   Nan
    0.6653811    0.5442573    0.3616361    0.4051954    0.1121355    Nan   Nan
    0.6283918    0.2320748    0.2922267    0.9184708    0.6856896    Nan   Nan
    0.8497452    0.2312237    0.5664249    0.0437334    0.1531217    Nan   Nan
    0.685731     0.2164633    0.4826472    0.4818509    0.6970851    Nan   Nan
    0.8782165    0.8833888    0.3321719    0.2639556    0.8415518    Nan   Nan
    0.068374     0.6525135    0.5935095    0.4148104    0.4062025    Nan   Nan 

-->s1.text()
 ans  =

!          Bambang Siswoyo    Pria    !
!                                     !
!          Ekoyanto Pudjiono  Pria    !
!                                     !
!          Nurhidayat         Pria    !
!                                     !
!          Ana Safitri        Wanita  !
!                                     !
!          Wijono             Pria    !
!                                     !
!          Masruri            Pria    !
!                                     !
!          Mochammad Rusli    Pria    !
!                                     !
!          Ive Emaliana       Wanita  !
!                                     !
!          Ari Wahjudi        Pria    !
!                                     !
!          M. Aswin           Pria    !

Variabel s1 berisi yang sama dengan data dalam file excel, sesuai dengan baris dan kolomnya. s1.value() adalah isi yang mengandung nilai numeric, sedangkan s1.text yang berisi string atau text.

Jika dibandingkan dengan cara sebelumnya, cara ini lebih mudah bagi orang awam karena tidak menggunakan index. Selain itu file langsung dibuka seketika, tanpa menggunakan fungsi xls_open(). Cara ini adalah instant, namun cara sebelumnya memiliki kelebihan yaitu memiliki informasi secara detail, sehingga pengembangan program akan lebih leluasa.

Saya sarankan kalau hanya ingin mengimport data dari excel secara cepat, hanya untuk mendapatkan datanya, sebaiknya digunakan cara ini.

Sekian mudah-mudahan berguna.

 

Posted in Program open source, scilab | Tagged , , | Leave a comment

Belajar Scilab: membaca file microsoft excel (cara 1)

Isi materi ini ditujukan untuk berbagi ilmu pengetahuan kepada semua pengunjung blog ini.
Silakan digunakan untuk kepentingan proses pembelajaran untuk mencerdaskan bangsa ini dengan tidak lupa menyebutkan sumbernya.
Namun yang harus dihidari adalah: mengambil isi dengan mengakui sebagai haknya, mengambil isi untuk tujuan komersialisasi.
Semua tergantung kepada hati-nurani, jika terjadi saya berkewajiban mengingatkan para plagiator. Biasakan sesuatunya terlahir dari tangan anda, itu menunjukkan bahwa anda ada dan anda diberi hidayah sebagai ciptaanNya yang paling mulia untuk memberikan manfaat di dunia ini. Biasakanlah memberikan manfaat kepada orang lain, dan jangan membiasakan memanfaatkan orang lain.

Jika anda memiliki data yang disimpan dalam microsoft excel 2003 atau sebelumnya, anda dapat mengimport data tersebut kedalam scilab untuk diolah dengan mudah melalui program atau secara immidiate di console scilab. Disini saya akan menjelaskan tentang perintah-perintah scilab dengan cara memanggil fungsi yang berhubungan dengan micrsoft excel.

Scilab menyediakan 3 cara membaca file microsoft excel. Disini dijelaskan cara pertam, dengan menggunakan fungsi:

xls_open() dan xls_read()

Misalkan anda memiliki data yang disimpan dengan microsoft excel dengan data sebagai berikut:

Data diatas merupakan data karangan saja, yang berhubungan dengan nama. Satu baris data terdiri dari 5 data numeric, 2 string. Data string berupa nama dan jenis kelamin. Data tersebut perlu diimport kedalam scilab utuk diolah datanya. misalnya diplot untuk masing-masing nama.

Dalam contoh hanya dilakukan secara immidiate kedalam console scilab.

 Membaca data excel dengan perintah xls_open() and xls_read()

Langkah-langkahnya adalah:

  1. Bukalah file excel dengan fungsi xls_open()
  2. Bacalah data dari file excel dengan fungsi xls_read()
  3. Tutup file excel dengan fungsi mclose()

 Perintah xls_open() selengkapnya adalah sebagai berikut:

[fd, vstr, nsh, psh] = xls_open(filename)

Perintah ini memiliki keluaran sebanya 4 parameter yaitu:

  1. fd : adalah file descriptor dari file yang dibuka untuk dibaca. Nama file yang disebut harus ada dalam direktori drive yang disebutkan, jika tidak ada maka akan dikeluarkan pesan kesalahan.
  2. vstr : adalah vektor seluruh string yang ada dalam sheet excel.
  3. nsh : adalah nama sheet dalam dokomen excel.
  4. psh : adalah vektor dari angka yang berisi sheet mulai dari awal dari file excel.

Cobalah perintah perikut:

-->[fd,vstr,nsh,psh]=xls_open("d:/data_scilab/data1.xls")
 psh  =

    11952.
 nsh  =

 data1
 vstr  =

         column 1 to 6

!Bambang Siswoyo  Nurhidayat  Ana Safitri  Ekoyanto Pudjiono  Wijono  Masruri  !

         column  7 to 12

!Mochammad Rusli  Ive Emaliana  Ari Wahjudi  M. Aswin  Pria  Wanita  !
 fd  =

    1.

Variabel fd berisi nilai 1, sebagai file descriptor. Variabel nsh berisi sesuai dengan nama sheet dalam dokumen microsoft excel yaitu data1. Sedangkan variabel vstr berisi vektor dari semua string yang ada, artinya jika ada string yang sama (Pria, Wanita), dalam variabel vst hanya satu saja.

Selanjutnya anda dapat memisahkan antara numeric dan string dari file yang telah dibuka tadi, dengan menggunakan perintah:

-->[numeric,string]=xls_read(fd,psh(1))

 string  =

    0.    0.    0.    0.    0.    1.     11.
    0.    0.    0.    0.    0.    4.     11.
    0.    0.    0.    0.    0.    2.     11.
    0.    0.    0.    0.    0.    3.     12.
    0.    0.    0.    0.    0.    5.     11.
    0.    0.    0.    0.    0.    6.     11.
    0.    0.    0.    0.    0.    7.     11.
    0.    0.    0.    0.    0.    8.     12.
    0.    0.    0.    0.    0.    9.     11.
    0.    0.    0.    0.    0.    10.    11.
 numeric  =

    0.2113249    0.5608486    0.3076091    0.5015342    0.2806498    Nan   Nan
    0.7560439    0.6623569    0.9329616    0.4368588    0.1280058    Nan   Nan
    0.0002211    0.7263507    0.2146008    0.2693125    0.7783129    Nan   Nan
    0.3303271    0.1985144    0.312642     0.6325745    0.211903     Nan   Nan
    0.6653811    0.5442573    0.3616361    0.4051954    0.1121355    Nan   Nan
    0.6283918    0.2320748    0.2922267    0.9184708    0.6856896    Nan   Nan
    0.8497452    0.2312237    0.5664249    0.0437334    0.1531217    Nan   Nan
    0.685731     0.2164633    0.4826472    0.4818509    0.6970851    Nan   Nan
    0.8782165    0.8833888    0.3321719    0.2639556    0.8415518    Nan   Nan
    0.068374     0.6525135    0.5935095    0.4148104    0.4062025    Nan   Nan

Perintah diatas menghasilkan dua variabel yaitu numeric (kiri) dan string (kanan). Ukuran matrik dari string dan numeric akan sama sesuai dengan ukuran data pada file excel, yaitu 7×10. Variabel numeric akan berisi data numeric, bila bukan maka diisi dengan “Nan” artinya selain numeric. Variabel string akan berisi numeric sebagai indek dari variabel vst yang berisi string.

Plotting Data

Sebagai contoh kasus adalah, bagaimana memplot data 3 nama kedalam satu window grafik. Setiap nama memiliki 5 data pada masing-masing baris yang bersesuaian. 3 nama pertama adalah “Bambang Siswoyo“, “Nurhidayat“, “Ana Safitri“. Masing-masing datanya ada di baris 1-3, kolom 1-5 dalam variabel numeric. Sedangkan indek nama ada dalam variabel string kolom 6 baris 1-3. Sedangkan data string ada dalam variabel vstr.

-->t=1:5
 t  =

    1.    2.    3.    4.    5.  

-->plot(t,numeric(1,1:5),'o-')

-->plot(t,numeric(2,1:5),'*-')

-->plot(t,numeric(3,1:5),'X-')

-->legend(vstr(string(1:3,6)))
 ans  =

 !--error 144
Undefined operation for the given operands.

check or define function %c_a_s for overloading.

at line     208 of function %h_p called by :
legend(vstr(string(1:3,6)))

 Hasil grafiknya sebagai berikut:

Selamat mencoba, semoga bermanfaat.

 

Posted in Program open source, scilab | Tagged , , | Leave a comment