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, dan dir;
  • search path beserta path, addpath, dan savepath;
  • which dan 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:

PerintahFungsi
pwdmenampilkan current folder (print working directory)
cd('folder')mengubah current folder
dirmenampilkan daftar berkas di current folder

Sesi berikut memperlihatkan ketiganya bekerja (contoh memakai folder fiktif milik Budi):

text
>> pwd

ans =

    '/home/budi/Documents/MATLAB'

>> cd('latihan')
>> pwd

ans =

    '/home/budi/Documents/MATLAB/latihan'

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (pwd): pwd mengembalikan alamat current folder sebagai teks; karena dipanggil tanpa titik koma, hasilnya di-echo dengan tanda kutip tunggal khas tampilan char.
  2. Baris 2 (cd('latihan')): cd memindahkan current folder ke subfolder latihan. Perintah cd yang berhasil tidak menghasilkan echo apa pun.
  3. Baris 3 (pwd lagi): 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:

PerintahFungsi
pathmenampilkan 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
savepathmenyimpan 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:

matlab
% 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 sin

Output yang Dihasilkan:

text
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.cc

Mari kita bedah baris-baris kode di atas:

  1. Baris 4 (fprintf('Current folder : %s\n', pwd)): pwd mengembalikan alamat folder, lalu fprintf mencetaknya sebagai teks — deterministik dan identik di MATLAB maupun Octave.
  2. Baris 8 (daftar = dir('*.m')): dir dengan pola *.m mengembalikan struct array berisi informasi berkas yang cocok. Bagian .name dari setiap elemen dikumpulkan dengan {daftar.name} lalu digabung strjoin menjadi satu baris teks.
  3. Baris 13 (fprintf('Lokasi contoh : %s\n', which('contoh'))): which menemukan definisi contoh tepat di current folder — bukti langsung bahwa current folder dicari lebih dulu.
  4. Baris 16 (which sin): untuk fungsi builtin, tidak ada berkas .m milik pengguna; MATLAB melaporkan sin sebagai 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 '...'):

text
>> hitungLuas
Unrecognized function or variable 'hitungLuas'.

Empat penyebab paling umum beserta solusinya:

  1. Berkas ada, tetapi current folder salah. Pindahkan current folder ke lokasi berkas dengan cd, atau simpan berkas di current folder.
  2. Folder berkas belum terdaftar di search path. Jalankan addpath('alamat-folder'), lalu savepath bila ingin permanen.
  3. Kesalahan ketik. Nama bersifat case-sensitive: hitungLuas dan hitungluas adalah dua nama yang berbeda.
  4. Nama tertimpa variabel. Jika sudah ada variabel bernama hitungLuas di 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.