Workspace

Memeriksa dan membersihkan variabel dengan who, whos, dan clear serta menyimpan berkas .mat.

Daftar isi

Setiap variabel yang dibuat pada sesi MATLAB menempati sebuah workspace, yaitu kumpulan variabel yang hidup di memori selama sesi berjalan. Topik ini membahas pengelolaan workspace: mendaftar variabel dengan who, memeriksa ukuran dan tipenya dengan whos, membersihkan dengan clear, memeriksa keberadaan nama dengan exist, serta menyimpan dan memuat variabel lewat berkas .mat. Keterampilan ini menjaga sesi tetap terkendali ketika data bertambah dan menjadi jembatan untuk melanjutkan pekerjaan pada sesi berikutnya.

Workspace dan perintah who#

Isi workspace tumbuh mengikuti pekerjaan: setiap pernyataan penugasan menambah atau menimpa satu nama, dan variabel tetap hidup sampai sesi ditutup atau dibersihkan secara eksplisit. Dalam sesi panjang yang memuat pencobaan berulang, jejak variabel antara seperti ini menumpuk diam-diam. Karena itu, mendaftar isi workspace menjadi kebiasaan pembuka sebelum perhitungan penting dijalankan.

Perintah who menampilkan daftar nama seluruh variabel yang saat itu hidup. Daftar ini menjadi pemeriksaan pertama ketika hasil perhitungan terasa aneh, karena variabel lama yang tertinggal sering ikut memengaruhi perhitungan baru. Agar keluarannya deterministik, variabel contoh dibuat lebih dahulu pada blok yang sama dengan pemanggilan who.

matlab Mendaftar variabel dengan who
nilai = [78 85 90];
nama = 'Citra';
A = [1 2; 3 4];
who
text Keluaran
Variables visible from the current scope:

A      nama   nilai

Tiga variabel tersebut muncul sesuai urutan abjad. Pada sesi nyata yang telah lama berjalan, daftar ini dapat jauh lebih panjang dan menyingkap variabel yang sebenarnya sudah tidak diperlukan. Perintah who tidak melaporkan ukuran maupun tipe datanya, sehingga pemeriksaan yang lebih rinci memerlukan whos.

Rincian variabel dengan whos#

Perintah whos menampilkan tabel yang memuat nama, ukuran, banyak byte, dan kelas setiap variabel. Kelas menyatakan tipe data, misalnya double untuk bilangan pecahan presisi ganda dan char untuk teks.

matlab Rincian variabel dengan whos
whos
text Keluaran
Variables visible from the current scope:

variables in scope: top scope

  Attr   Name        Size                     Bytes  Class
  ====   ====        ====                     =====  ===== 
         A           2x2                         32  double
         nama        1x5                          5  char
         nilai       1x3                         24  double

Total is 12 elements using 61 bytes

Tabel tersebut memperlihatkan A sebagai matriks 2×22 \times 2 kelas double yang memuat 32 byte, nama sebagai teks lima karakter kelas char, dan nilai sebagai vektor baris tiga elemen. Baris terakhir merangkum jumlah elemen dan total byte yang digunakan seluruh variabel. Ukuran pada kolom Size sering menjadi petunjuk cepat untuk mendeteksi kekeliruan orientasi, misalnya variabel yang diharapkan berupa vektor kolom 3×13 \times 1 ternyata berupa vektor baris 1×31 \times 3. Kolom Bytes membantu memperkirakan muatan data besar, karena tabel dengan jutaan elemen terlihat wajar di daftar nama tetapi terlihat jelas bobotnya di kolom ini.

Membersihkan variabel dengan clear#

Perintah clear menghapus variabel dari workspace. Bentuk clear nama menghapus variabel tertentu, sedangkan clear tanpa argumen menghapus seluruh variabel sekaligus.

matlab Menghapus satu variabel dengan clear
clear nama
who
text Keluaran
Variables visible from the current scope:

A      nilai

Variabel nama hilang dari daftar sementara A dan nilai tetap hidup. Pembersihan selektif seperti ini digunakan untuk membuang data antara yang tidak lagi diperlukan tanpa memengaruhi variabel lain. Sebaliknya, clear tanpa argumen mengosongkan seluruh workspace, dan keadaan kosong itu dapat diperiksa dengan exist yang mengembalikan nol ketika variabel yang ditanyakan tidak ada.

matlab clear tanpa argumen dan pemeriksaan exist
clear
exist('nilai', 'var')
text Keluaran
ans = 0

Fungsi exist memeriksa keberadaan sebuah nama dan mengembalikan angka yang menandakan jenisnya. Nilai satu berarti variabel dengan nama itu hidup, nilai nol berarti tidak ada, dan nilai dua berarti berkas dengan nama itu ditemukan. Bentuk lengkapnya selalu menyertakan jenis yang diperiksa sebagai argumen kedua, misalnya exist('nilai', 'var') untuk variabel dan exist('data.mat', 'file') untuk berkas.

Menyimpan dan memuat berkas .mat#

Perintah save menuliskan variabel terpilih ke sebuah berkas .mat, dan load membacanya kembali ke workspace. Bentuk perintah save menyebut nama berkas lebih dahulu, lalu disusul daftar variabel yang disimpan.

matlab arsip_nilai.m
% arsip_nilai.m: menyimpan variabel ke berkas .mat lalu memuatnya kembali

nilai = [78 85 90 66 92];
nama = 'Citra';

% simpan dua variabel ke berkas data.mat
save data.mat nilai nama

% bersihkan workspace lalu muat ulang dari berkas
clear
load data.mat

disp('variabel yang hidup setelah load:')
who
disp('isi nilai:')
disp(nilai)
fprintf('nama: %s\n', nama)
text Keluaran
variabel yang hidup setelah load:
Variables visible from the current scope:

nama   nilai

isi nilai:
   78   85   90   66   92
nama: Citra

Skrip tersebut menyimpan nilai dan nama ke data.mat, mengosongkan workspace dengan clear, lalu memuat ulang berkas itu dengan load. Hasil load terlihat pada daftar who yang kembali memuat kedua variabel beserta isinya yang utuh. Urutan ini meniru alur kerja nyata: data mentah disimpan pada akhir pengukuran, lalu dimuat kembali pada saat analisis. Tanpa penyimpanan, seluruh variabel hilang ketika MATLAB ditutup.

Bentuk pemanggilan fungsi juga sah: seluruh argumen ditulis sebagai teks di dalam tanda kurung. Bentuk ini menjadi pilihan ketika nama berkas atau daftar variabel dibangun secara programatik. Pemanggilan berikut menggunakan bentuk fungsi dengan format -v7 yang dapat dibaca lintas implementasi.

matlab Bentuk fungsi save dan load dengan format -v7
suhu = [36.5 36.8 37.1];
save('-v7', 'suhu.mat', 'suhu');
exist('suhu.mat', 'file')
clear suhu
load('suhu.mat')
exist('suhu', 'var')
text Keluaran
ans = 2
ans = 1

Pemeriksaan exist pertama mengembalikan dua karena berkas suhu.mat sudah dibuat, kemudian setelah clear suhu dan load, pemeriksaan kedua mengembalikan satu karena variabel suhu hidup kembali. Perintah save tanpa format tambahan tetap sah pada kedua implementasi, hanya saja berkas hasilnya menggunakan format bawaan masing-masing sehingga bentuk -v7 menjadi pilihan ketika berkas akan dipertukarkan.

Kesalahan umum#

  • Lupa titik koma penekan gema. Pernyataan pembuatan variabel tanpa titik koma menampilkan hasilnya satu per satu. Ketika ratusan baris data dimuat dari skrip, gema ini memperlambat pembacaan dan menutupi keluaran yang benar-benar penting, sehingga hasil yang perlu diperiksa sebaiknya ditampilkan secara eksplisit dengan disp atau fprintf.
  • clear tanpa argumen yang tidak disengaja. Satu kata tanpa daftar variabel menghapus seluruh workspace. Kebiasaan mengakhiri skrip dengan clear sebaiknya diganti dengan pembersihan selektif yang menyebut nama variabel antara satu per satu, sehingga data utama yang masih diperlukan tetap hidup untuk dianalisis lebih lanjut.
  • Menimpa variabel saat load. Berkas .mat menyimpan nama variabel apa adanya, sehingga load menimpa variabel yang sedang hidup bila namanya sama. Kondisi ini tidak memicu error sama sekali, dan nilai lama hilang tanpa jejak. Periksa dengan who lebih dahulu, atau muat ke ruang nama terpisah dengan bentuk S = load(‘data.mat’) yang hasilnya menjadi bidang pada struktur S.

Ringkasan#

  • who mendaftar nama variabel, sedangkan whos menambahkan ukuran, byte, dan kelas untuk setiap variabel.
  • clear nama menghapus variabel tertentu dan clear tanpa argumen mengosongkan seluruh workspace tanpa konfirmasi.
  • exist memeriksa keberadaan nama dengan jenis yang ditetapkan argumen keduanya, misalnya var untuk variabel dan file untuk berkas.
  • save dan load memindahkan variabel ke dan dari berkas .mat, dan bentuk -v7 menjaga berkas dapat dibaca lintas implementasi.

Referensi#