Skrip

Menulis dan menjalankan berkas .m serta membagi skrip menjadi cell mode.

Daftar isi

Skrip adalah berkas .m yang memuat daftar perintah MATLAB dan dieksekusi berurutan dari baris pertama sampai terakhir. Topik ini membahas penulisan berkas skrip, cara menjalankannya dari editor maupun dari terminal, variabel yang ditinggalkannya di workspace, serta pembagian skrip panjang menjadi seksi dengan penanda %%. Setelah memahami materi ini, perhitungan yang tadinya diketik ulang pada setiap sesi dapat disimpan sebagai satu berkas dan dijalankan kembali dengan satu perintah.

Berkas .m sebagai daftar perintah#

Sebuah berkas skrip berisi teks biasa berekstensi .m yang memuat perintah MATLAB, satu pernyataan per baris, sama seperti perintah yang diketik pada Command Window. Penerjemah membaca berkas itu dari baris pertama sampai terakhir dan menjalankan setiap pernyataan menurut urutan penulisannya. Berkas tersebut bukan program terkompilasi, melainkan daftar perintah yang dievaluasi ulang setiap kali skrip dijalankan, sehingga hasilnya dapat diulang dan diperiksa kapan saja.

Perhitungan pendek paling cepat dikerjakan langsung di Command Window. Sebagai contoh, rerata lima pengukuran suhu pagi dapat dihitung dengan tiga baris berikut.

matlab Menghitung rerata di Command Window
suhu = [21 23 22 24 25];
rerata = mean(suhu);
fprintf('rerata catatan: %.1f\n', rerata);
text Keluaran
rerata catatan: 23.0

Bentuk interaktif seperti itu memadai selama perhitungan hanya dibutuhkan sekali. Persoalan muncul ketika rangkaian yang sama dibutuhkan lagi dengan data baru, karena seluruh baris harus diketik ulang dari awal. Berkas skrip mengatasi persoalan itu dengan menyimpan rangkaian perintah sekali saja, lalu menjalankannya kembali kapan pun diperlukan. Ringkasan catatan suhu yang lebih lengkap dapat ditulis sebagai berkas berikut.

matlab catatan_suhu.m
% catatan_suhu.m: merangkum catatan suhu pagi dalam derajat Celsius

suhu = [21 23 22 24 25];
banyak = numel(suhu);
rerata = mean(suhu);
terbesar = max(suhu);

fprintf('banyak pengukuran : %d\n', banyak);
fprintf('rerata            : %.1f\n', rerata);
fprintf('terbesar          : %.1f\n', terbesar);
text Keluaran
banyak pengukuran : 5
rerata            : 23.0
terbesar          : 25.0

Skrip tersebut menyiapkan data dan hasil antara pada empat pernyataan penugasan, kemudian melaporkan hasilnya dengan tiga panggilan fprintf. Titik koma di akhir setiap penugasan menekan gema sehingga keluaran skrip hanya berisi laporan yang memang dimaksudkan. Komentar pada baris pertama mencatat nama berkas beserta tujuannya, dan satuan data dinyatakan di sana karena satuan tidak terlihat dari angka itu sendiri.

Menjalankan skrip dari editor dan terminal#

Editor MATLAB menjalankan berkas yang sedang dibuka melalui tombol Run pada pita editor, dan berkas harus tersimpan lebih dahulu karena yang dieksekusi adalah berkas di diska. Cara kedua adalah mengetik nama berkas tanpa ekstensi pada Command Window, misalnya catatan_suhu, dan pencarian berkas dilakukan pada folder aktif serta daftar path. Kedua cara memberikan hasil yang sama karena keduanya menjalankan isi berkas secara berurutan.

Dari terminal, GNU Octave menjalankan berkas yang sama dengan perintah octave yang diikuti nama berkasnya. Seluruh contoh pada jalur ini diverifikasi dengan Octave, sehingga perintah berikut benar-benar dapat dijalankan ulang beserta keluarannya.

bash
# jalankan skrip dari terminal
octave --quiet catatan_suhu.m 2>/dev/null
text Keluaran
banyak pengukuran : 5
rerata            : 23.0
terbesar          : 25.0

Opsi –quiet membungkam sapaan pembuka Octave, sedangkan pengalihan 2>/dev/null membuang aliran kesalahan standar yang pada lingkungan sandbox ini memuat peringatan konfigurasi grafik. Tiga baris laporan yang tampil sama persis dengan hasil tombol Run di editor karena isi berkas dan urutan eksekusinya tidak berubah. Pada instalasi MATLAB tidak terdapat perintah octave, sehingga pembaca yang menggunakan MATLAB cukup memakai tombol Run atau mengetik catatan_suhu pada Command Window.

Variabel skrip hidup di workspace#

Skrip berbagi workspace dengan Command Window, sehingga setiap variabel yang dibuatnya menempati ruang yang sama dengan variabel sesi interaktif. Variabel tersebut tetap hidup setelah skrip selesai dan dapat dipakai untuk perhitungan lanjutan. Pemeriksaan berikut berlangsung setelah catatan_suhu.m selesai dan memanfaatkan variabel yang ditinggalkan skrip itu.

matlab Memeriksa variabel yang ditinggalkan skrip
% variabel yang dibuat skrip tetap hidup di workspace
rentang = terbesar - min(suhu);
fprintf('rentang catatan: %.1f\n', rentang);
who
text Keluaran
rentang catatan: 4.0
Variables visible from the current scope:

banyak    rentang   rerata    suhu      terbesar

Nilai rentang dihitung dari terbesar dan suhu yang keduanya dibuat oleh skrip, bukan oleh perintah interaktif. Daftar who memuat rentang yang baru dibuat beserta banyak, rerata, suhu, dan terbesar yang ditinggalkan catatan_suhu.m, sehingga seluruh keadaan sesi dapat dibaca dari satu daftar. Perilaku ini menguntungkan untuk pemeriksaan hasil, tetapi juga berarti skrip dan sesi saling memengaruhi satu sama lain.

Membagi skrip dengan cell mode#

Penanda %% pada awal baris memulai seksi baru dan menjadikan sisa baris itu judul seksi. Mekanisme ini dikenal sebagai cell mode karena editor MATLAB membagi berkas menjadi sel yang dapat dinavigasi. Sel juga dapat dijalankan satu per satu melalui tombol Run Section, sehingga seksi yang sedang dikerjakan dapat diuji tanpa menjalankan seluruh berkas. Saat skrip dieksekusi dari terminal atau dari Command Window, baris %% berlaku sebagai komentar biasa dan seluruh berkas tetap dijalankan berurutan dari atas ke bawah.

matlab Penanda %% sebagai komentar saat dieksekusi
%% Seksi 1: memuat data pengukuran
suhu = [21 23 22 24 25];

%% Seksi 2: melaporkan ringkasan
fprintf('banyak pengukuran : %d\n', numel(suhu));
fprintf('rerata            : %.1f\n', mean(suhu));
text Keluaran
banyak pengukuran : 5
rerata            : 23.0

Keluaran blok di atas memperlihatkan perilaku yang jujur, yaitu kedua seksi sama-sama dieksekusi karena pemanggilan dari antarmuka teks tidak mengenal batas seksi. Penanda %% baru berperan sebagai pembatas eksekusi ketika seksi dijalankan dari editor. Judul seksi sebaiknya menyatakan tugasnya, misalnya memuat data atau melaporkan ringkasan, agar kerangka skrip terbaca tanpa harus membaca kodenya.

Kesalahan umum#

  • Menjalankan skrip dari folder yang salah. Pemanggilan catatan_suhu hanya menemukan berkas bila folder aktif atau path memuat berkas itu, dan kegagalan pencarian dilaporkan sebagai nama yang tidak dikenal. Pindahkan folder aktif ke lokasi berkas dengan cd, atau panggil dengan jalur berkas lengkap.
  • Mengharapkan %% menghentikan eksekusi bagian lain. Saat dijalankan dari terminal atau Command Window, seluruh baris tetap dieksekusi berurutan karena %% hanya komentar. Jalankan per seksi dari editor, atau pecah pekerjaan menjadi beberapa berkas bila bagian memang harus berdiri sendiri.
  • Gema yang memenuhi layar pada skrip panjang. Penugasan tanpa titik koma menampilkan hasilnya satu per satu sehingga laporan yang penting tenggelam. Akhiri setiap penugasan dengan titik koma, lalu tampilkan hasil secara eksplisit dengan fprintf atau disp pada bagian laporan.

Ringkasan#

  • Berkas .m berisi daftar perintah yang dieksekusi berurutan dari atas ke bawah, sama seperti perintah yang diketik pada Command Window.
  • Skrip dijalankan dari editor dengan tombol Run, dari Command Window dengan nama berkasnya, atau dari terminal dengan octave nama.m.
  • Variabel skrip menempati workspace yang sama dengan Command Window dan tetap hidup setelah skrip selesai, sehingga dapat diperiksa maupun tertimpa.
  • Penanda %% membagi skrip menjadi seksi yang dapat dijalankan terpisah di editor, tetapi berlaku sebagai komentar biasa saat dieksekusi dari terminal.

Referensi#