Kita sudah mahir membuat array dan matriks; pengolahan data dimulai ketika array tersebut diberi makna. Kasir toko kelontong yang mencatat unit dan harga setiap hari, stasiun cuaca yang merekam suhu tiap pagi — keduanya menghasilkan angka yang harus ditata dulu sebelum bisa dianalisis. MATLAB menyimpan dataset numerik seperti itu sebagai satu matriks, dan kebiasaan menatanya dengan benar menentukan mudah-tidaknya seluruh langkah berikutnya. Di chapter ini kita membangun fondasi tersebut:

  • Membangun dataset vektor dan 2D dengan konvensi baris = observasi, kolom = variabel
  • Mengaudit ukuran dataset dengan size, numel, dan whos
  • Mengubah orientasi data dengan transpose
  • Menyimpan dataset ke berkas .mat dan memuatnya kembali

Dataset: Baris Observasi, Kolom Variabel #

Aturannya: satu dataset numerik disimpan sebagai SATU matriks — setiap baris adalah satu observasi (satu kejadian pengukuran), setiap kolom adalah satu variabel (besaran yang diukur). Mekanismenya: tiap variabel disiapkan sebagai vektor kolom, lalu digabungkan berdampingan dengan horizontal concatenation [a b c] — operator dari Chapter Concatenation. Konvensi kolom = variabel bukan sekadar estetika: fungsi ringkasan mean, sum, max, dan min memproses matriks kolom demi kolom, sehingga statistik per variabel dihitung langsung tanpa satu loop pun.

matlab
hari  = (1:12)';
unit  = [12; 15; 9; 22; 18; 7; 25; 11; 14; 20; 16; 19];
harga = [15000; 15000; 16000; 16000; 15000; 17000; 15000; 16000; 17000; 16000; 17000; 15000];

penjualan = [hari unit harga];           % 12 observasi x 3 variabel
suhu = [30 32 31 29 33 34 31 30 35 32];  % deret suhu harian (derajat)

fprintf('penjualan: %d baris x %d kolom\n', size(penjualan, 1), size(penjualan, 2));
fprintf('  hari   unit   harga\n');
fprintf('%6d %6d %7d\n', penjualan.');

Output yang Dihasilkan:

text
penjualan: 12 baris x 3 kolom
  hari   unit   harga
     1     12   15000
     2     15   15000
     3      9   16000
     4     22   16000
     5     18   15000
     6      7   17000
     7     25   15000
     8     11   16000
     9     14   17000
    10     20   16000
    11     16   17000
    12     19   15000

Mari kita bedah baris-baris kode di atas:

  1. Baris 1-3 (hari, unit, harga): tiga vektor kolom 12×1 — satu per variabel. Operator ' pada (1:12)' memutar deret hari dari vektor baris menjadi vektor kolom agar arahnya seragam dengan dua variabel lain.
  2. Baris 5 (penjualan = [hari unit harga]): horizontal concatenation menempel tiga kolom menjadi matriks 12×3. Baris ke-7 kini berdiri sebagai satu observasi utuh: hari 7, terjual 25 unit, harga Rp15.000.
  3. Baris 6 (suhu): data satu variabel cukup disimpan sebagai vektor — tidak ada variabel kedua yang perlu disejajarkan.
  4. Baris 8-10 (fprintf): size(penjualan, 1) membaca jumlah baris dan size(penjualan, 2) jumlah kolom. Matriks penjualan.' ditranspose dulu karena fprintf membaca elemen kolom demi kolom — dengan transpose, tiap siklus format mencetak satu observasi.

Imbalan langsung dari konvensi ini terasa saat kita mengaudit isi dataset:

matlab
fprintf('total unit terjual : %d\n', sum(penjualan(:, 2)));
pendapatan = sum(penjualan(:, 2) .* penjualan(:, 3));
fprintf('total pendapatan   : Rp%d\n', pendapatan);
fprintf('rata-rata suhu     : %.2f derajat\n', mean(suhu));

Output yang Dihasilkan:

text
total unit terjual : 188
total pendapatan   : Rp2956000
rata-rata suhu     : 31.70 derajat

Penjelasan singkatnya: penjualan(:, 2) memilih seluruh baris kolom ke-2 (pola slicing dari Chapter Array Slicing), lalu .* mengalikan unit dan harga elemen demi elemen sebelum sum menjumlahkannya menjadi pendapatan.

Audit Dataset: size, numel, dan whos #

Data nyata tiba dalam ukuran yang tidak kita hafal — ratusan baris rekaman kasir, deret panjang dari sensor. Sebelum diproses, dataset diaudit dulu. Fungsi size(M) mengembalikan [jumlahBaris jumlahKolom], numel(M) menghitung total elemen, dan perintah whos menampilkan inventaris seluruh variabel workspace beserta kelas dan jumlah byte-nya:

matlab
fprintf('baris   : %d\n', size(penjualan, 1));
fprintf('kolom   : %d\n', size(penjualan, 2));
fprintf('elemen  : %d\n', numel(penjualan));

Output yang Dihasilkan:

text
baris   : 12
kolom   : 3
elemen  : 36

Sementara whos di Command Window (setelah dataset di atas dibuat) melaporkan:

text
>> whos
  Name           Size            Bytes  Class     Attributes

  hari           12x1               96  double
  harga          12x1               96  double
  penjualan      12x3              288  double
  suhu           1x10               80  double
  unit           12x1               96  double

Mari kita bedah hasil audit tersebut:

  1. Baris 1-3 (size/numel): 12 baris, 3 kolom, 36 elemen — angka ini menjadi penyebut alami ketika chapter Filtering menghitung persentase baris yang lolos kondisi.
  2. Tabel whos: setiap elemen double memakai 8 byte, sehingga penjualan menyita 288 byte. Tabel ini juga menyingkap variabel perantara hari, unit, harga yang isinya sudah terserap ke penjualan — kandidat clear agar workspace tetap ramping.

Orientasi Data: Kapan Perlu Transpose #

Data mentah sering tiba dalam orientasi baris: deret pengukuran disalin mendatar dari laporan. Aturannya: operator transpose (') menukar dimensi array tanpa mengubah satu nilai pun — vektor baris 1×12 menjadi vektor kolom 12×1, bentuk yang siap ditempel menjadi variabel di matriks dataset. Kita sudah bertemu operator ini pada Chapter Mengubah Ukuran Array; di sini perannya murni urusan orientasi:

matlab
unitBaris = [12 15 9 22 18 7 25 11 14 20 16 19];   % data mentah, orientasi baris
fprintf('sebelum transpose  : %d x %d\n', size(unitBaris, 1), size(unitBaris, 2));
unitKolom = unitBaris';
fprintf('sesudah transpose  : %d x %d\n', size(unitKolom, 1), size(unitKolom, 2));

Output yang Dihasilkan:

text
sebelum transpose  : 1 x 12
sesudah transpose  : 12 x 1

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (unitBaris): pengukuran 12 hari ditulis mendatar — bentuk umum hasil salin-tempel dari laporan.
  2. Baris 3 (unitKolom = unitBaris'): transpose memutar 1×12 menjadi 12×1; hanya tata letak yang berubah, nilainya tetap utuh dan berurutan.

Menyimpan Dataset: Berkas .mat #

Workspace MATLAB hidup hanya selama sesi — aplikasi ditutup, seluruh variabel lenyap. Mekanismenya: save('nama.mat', 'var1', 'var2') menulis variabel ke berkas biner .mat lengkap dengan nama dan presisi penuh double; load('nama.mat') mengembalikannya ke workspace persis seperti saat disimpan; exist('nama.mat', 'file') mengembalikan 2 bila berkasnya ada. Kita uji putaran penuh (roundtrip) simpan–hapus–muat:

matlab
save('dataset_toko.mat', 'penjualan', 'suhu');
fprintf('berkas tersimpan   : %d\n', exist('dataset_toko.mat', 'file'));

clear penjualan suhu
fprintf('setelah clear      : %d\n', exist('penjualan', 'var'));

load('dataset_toko.mat');
fprintf('setelah load       : %d baris, suhu hari 5 = %d\n', ...
        size(penjualan, 1), suhu(5));

Output yang Dihasilkan:

text
berkas tersimpan   : 2
setelah clear      : 0
setelah load       : 12 baris, suhu hari 5 = 33

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (save): dua variabel disimpan dengan nama aslinya. Format .mat menyimpan angka secara biner tanpa pembulatan — berbeda dari CSV teks yang harus memformat nilai menjadi karakter.
  2. Baris 4-5 (clear + exist): exist('penjualan', 'var') kini mengembalikan 0 — variabel benar-benar hilang, jadi keberhasilan load bukan ilusi dari variabel lama.
  3. Baris 7-8 (load): load menghidupkan kembali variabel bernama sama; verifikasi size dan suhu(5) menutup roundtrip tanpa kehilangan satu nilai pun.

Berkas contoh.m pada bagian bawah halaman merangkai seluruh siklus — membangun penjualan dan suhu, mengaudit, transpose, lalu putaran simpan–muat–hapus berkas .mat — dalam satu script yang dapat dijalankan utuh.

Ringkasan #

Dataset numerik di MATLAB adalah satu matriks dengan konvensi baris = observasi dan kolom = variabel — konvensi yang membuat sum dan mean langsung bekerja per variabel. Audit ukuran memakai size/numel di kode dan whos di Command Window; transpose meluruskan orientasi vektor mentah; dan save/load menjaga dataset bertahan melewati sesi lewat berkas .mat. Dengan data yang tertata, kita siap mengurutkannya: sort dan sortrows menanti di chapter berikutnya.