Galat paling sering menghentikan pemula MATLAB berbunyi Unrecognized function or variable '...' — padahal berkasnya jelas ada di komputer. Akar masalahnya hampir selalu bukan kode, melainkan tempat: MATLAB hanya mencari berkas di current folder dan di search path. Memahami cara MATLAB melacak lokasi berkas membuat kita bisa menjalankan skrip dari mana saja dan mendiagnosis galat “fungsi tidak dikenal” dalam hitungan detik. Chapter ini membedah kedua mekanisme tersebut.
Cakupan materi Chapter ini:
- current folder beserta
pwd,cd, dandir; - search path beserta
path,addpath, dansavepath; whichdan urutan pencarian nama di MATLAB;- diagnosis galat umum
Unrecognized function or variable.
Current Folder #
Aturannya: setiap sesi MATLAB punya satu current folder — folder kerja aktif tempat MATLAB menyimpan berkas baru dan mencari berkas yang dipanggil tanpa path lengkap. Mekanismenya: current folder tampil di bilah alamat bagian atas desktop; ketika kita menjalankan contoh atau membaca data.csv, MATLAB melengkapi nama tersebut menjadi path penuh berdasarkan current folder.
Tiga perintah inti untuk mengelolanya:
| Perintah | Fungsi |
|---|---|
pwd | menampilkan current folder (print working directory) |
cd('folder') | mengubah current folder |
dir | menampilkan daftar berkas di current folder |
Sesi berikut memperlihatkan ketiganya bekerja (contoh memakai folder fiktif milik Budi):
>> pwd
ans =
'/home/budi/Documents/MATLAB'
>> cd('latihan')
>> pwd
ans =
'/home/budi/Documents/MATLAB/latihan'Mari kita bedah baris-baris kode di atas:
- Baris 1 (
pwd):pwdmengembalikan alamat current folder sebagai teks; karena dipanggil tanpa titik koma, hasilnya di-echo dengan tanda kutip tunggal khas tampilan char. - Baris 2 (
cd('latihan')):cdmemindahkan current folder ke subfolderlatihan. Perintahcdyang berhasil tidak menghasilkan echo apa pun. - Baris 3 (
pwdlagi): pemeriksaan kedua membuktikan current folder sudah berpindah.
Panel Current Folder di desktop adalah tampilan grafis dari dir: klik ganda sebuah subfolder sama dengan cd, klik ganda berkas .m membuka berkas tersebut di Editor. Perintah dir juga menerima pola (pattern) seperti dir('*.m') untuk menyaring hanya berkas berakhiran .m.
Search Path MATLAB #
Aturannya: berkas yang berada di luar current folder tetap dapat dipanggil asalkan foldernya terdaftar di search path — daftar folder berurutan yang dipindai MATLAB saat mencari fungsi dan skrip. Mekanismenya, saat sebuah nama diketik di Command Window, MATLAB memeriksa lokasi berikut secara berurutan:
Dokumentasi resmi MATLAB menegaskan: berkas di current folder diutamakan di atas berkas bernama sama di mana pun pada search path, dan bila satu nama muncul di beberapa folder path, folder yang lebih atas yang dipakai. Akibatnya, berkas mean.m buatan kita di current folder menimpa fungsi mean bawaan MATLAB — perilaku yang disebut shadowing.
Empat perintah pengelola path yang perlu kita kenal:
| Perintah | Fungsi |
|---|---|
path | menampilkan search path saat ini (daftar panjang, dipisah pemisah folder) |
addpath('folder') | menambahkan folder ke urutan teratas search path |
rmpath('folder') | menghapus folder dari search path |
savepath | menyimpan search path saat ini untuk sesi-sesi berikutnya |
Perubahan addpath hanya berlaku untuk sesi aktif. Tanpa savepath, susunan path kembali ke keadaan lama saat MATLAB ditutup. Dialog grafis Set Path (tab Home → Environment → Set Path) menyediakan tombol yang sama: Add Folder, Remove, Move to Top, dan Save.
which: Melacak Lokasi Definisi #
Aturannya: which('nama') melaporkan berkas mana yang akan dipakai MATLAB ketika nama tersebut dipanggil. Mekanismenya: which menjalankan urutan pencarian yang sama dengan diagram di atas, lalu melaporkan hasilnya — jalur berkas di current folder, jalur berkas pada search path, atau keterangan built-in untuk fungsi internal. Perintah which adalah alat bukti paling cepat saat kita curiga versi fungsi yang salah terpanggil.
Berkas contoh.m berikut (tersedia di bagian bawah halaman) merangkum pwd, dir dengan pola, dan which:
% contoh.m — Memeriksa current folder dan lokasi fungsi.
% 1) pwd: current folder tempat MATLAB bekerja saat ini.
fprintf('Current folder : %s\n', pwd);
% 2) dir dengan pattern '*.m': berkas .m di current folder.
daftar = dir('*.m');
fprintf('Berkas .m : %s\n', strjoin({daftar.name}, ', '));
% 3) which: lokasi berkas yang mendefinisikan sebuah nama.
% 'contoh' adalah skrip ini sendiri, ditemukan di current folder.
fprintf('Lokasi contoh : %s\n', which('contoh'));
% 4) which untuk fungsi builtin sin.
which sinOutput yang Dihasilkan:
Current folder : /home/z/my-project/tutorial/content/matlab/pengenalan-matlab/current-folder-dan-path
Berkas .m : contoh.m
Lokasi contoh : /home/z/my-project/tutorial/content/matlab/pengenalan-matlab/current-folder-dan-path/contoh.m
'sin' is a built-in function from the file libinterp/corefcn/mappers.ccMari kita bedah baris-baris kode di atas:
- Baris 4 (
fprintf('Current folder : %s\n', pwd)):pwdmengembalikan alamat folder, lalufprintfmencetaknya sebagai teks — deterministik dan identik di MATLAB maupun Octave. - Baris 8 (
daftar = dir('*.m')):dirdengan pola*.mmengembalikan struct array berisi informasi berkas yang cocok. Bagian.namedari setiap elemen dikumpulkan dengan{daftar.name}lalu digabungstrjoinmenjadi satu baris teks. - Baris 13 (
fprintf('Lokasi contoh : %s\n', which('contoh'))):whichmenemukan definisicontohtepat di current folder — bukti langsung bahwa current folder dicari lebih dulu. - Baris 16 (
which sin): untuk fungsi builtin, tidak ada berkas.mmilik pengguna; MATLAB melaporkansinsebagai fungsi internal.
Galat Umum: Unrecognized Function or Variable #
Ketika nama tidak ditemukan di mana pun, MATLAB berhenti dengan galat berikut (pada rilis lama, teksnya berbunyi Undefined function or variable '...'):
>> hitungLuas
Unrecognized function or variable 'hitungLuas'.Empat penyebab paling umum beserta solusinya:
- Berkas ada, tetapi current folder salah. Pindahkan current folder ke lokasi berkas dengan
cd, atau simpan berkas di current folder. - Folder berkas belum terdaftar di search path. Jalankan
addpath('alamat-folder'), lalusavepathbila ingin permanen. - Kesalahan ketik. Nama bersifat case-sensitive:
hitungLuasdanhitungluasadalah dua nama yang berbeda. - Nama tertimpa variabel. Jika sudah ada variabel bernama
hitungLuasdi Workspace, pengetikan nama tersebut menunjuk ke variabel, bukan ke berkas fungsi.
Ringkasan #
Current folder adalah titik awal pencarian berkas: pwd melapor, cd memindahkan, dan dir mendaftar isinya. Search path memperluas jangkauan pencarian ke folder lain lewat addpath dan savepath, dengan current folder selalu diutamakan. Perintah which membuktikan berkas mana yang dipanggil, dan galat Unrecognized function or variable hampir selalu berarti berkas berada di luar kedua area tersebut. Chapter berikutnya membahas jaring pengaman berikutnya: cara mencari bantuan dari dalam MATLAB itu sendiri.