Nama asli MATLAB adalah MATrix LABoratory — laboratorium matriks. Seluruh bahasa ini dirancang dengan satu filosofi: every thing is a matrix. Sebuah skalar, vector, dan matrix bukan tiga jenis data yang berbeda; ketiganya adalah array dengan jumlah dimensi yang berbeda. Filosofi inilah yang membuat operasi nilaiUjian * bobot berjalan tanpa loop, dan sekaligus sumber kejutan bagi pemindah dari bahasa lain. Chapter ini meletakkan fondasi konsep yang dipakai seluruh Section: dimensi, ukuran, dan urutan penyimpanan elemen di dalam memori. Cakupan kita:

  • Filosofi everything-is-a-matrix: skalar sebagai matriks 1×1
  • Dimensi array: rows, columns, pages
  • Perbedaan row vector dan column vector
  • Fungsi interogasi ukuran: size, length, numel, ndims
  • Urutan kolom (column-major) sebagai dasar linear indexing

Skalar adalah Matriks 1x1 #

Aturannya sederhana: setiap nilai yang kita simpan di MATLAB — angka tunggal, tabel nilai, bahkan teks — adalah array. Mekanismenya: saat assignment skor = 95; dievaluasi, MATLAB mengalokasikan sebuah array dua dimensi berukuran 1×1 bertipe double, lalu mengikat nama skor ke array tersebut. Tidak ada kategori khusus “tipe skalar”; yang ada hanyalah array yang kebetulan punya satu baris dan satu kolom.

matlab
>> skor = 95;

>> size(skor)

ans =

     1     1

Fungsi size() menjawab “berapa baris dan berapa kolomnya?” dengan vektor [baris kolom]. Karena skor adalah array 1×1, jawabannya 1 1. Konsekuensi filosofi ini menyenangkan: semua operator dan fungsi yang bekerja pada matriks otomatis bekerja pada skalar — [78 84] + 10 dan 78 + 10 menggunakan mekanisme mesin yang sama.

Dimensi: Rows, Columns, Pages #

Array MATLAB tumbuh melalui tiga arah utama. Rows (baris) dihitung dari atas ke bawah, columns (kolom) dari kiri ke kanan, dan pages (halaman) — dimensi ketiga — menjulur ke “dalam” memori. Sebuah tabel nilai 3 siswa × 2 mata ujian adalah array 3×2; tumpukan dua tabel tersebut menjadi array 3×2×2. Kombinasi ukuran di tiap dimensi disebut shape dari array.

BentukUkuran (shape)Sebutan
51×1skalar / matriks 1×1
[10 20 30]1×3row vector
[10; 20; 30]3×1column vector
[78 84; 92 88]2×2matriks persegi
[78 84; 92 88; 85 90]3×2matriks persegi panjang
tumpukan dua matriks 3×23×2×2array 3-D

MATLAB tidak membatasi jumlah dimensi — array 4-D dan seterusnya sah — namun data harian kita hampir selalu berupa 1-D atau 2-D. Perhatikan pula bahwa row vector dan column vector sama-sama “vektor panjang 3”, tetapi bentuknya berbeda: 1×3 versus 3×1. Perbedaan bentuk ini bukan gaya-gayaan; Chapter Operasi Matriks nanti memperlihatkan perkalian matriks yang menolak satu bentuk dan menerima bentuk lainnya.

Empat Fungsi Interogasi Ukuran #

MATLAB menyediakan empat fungsi utama untuk membaca geometri array. size() melaporkan ukuran per dimensi; numel() menghitung banyaknya elemen; length() melaporkan dimensi terbesar; ndims() menghitung banyaknya dimensi:

matlab
nilaiUjian = [78 84; 92 88; 85 90];

fprintf('size  : %d x %d\n', size(nilaiUjian));
fprintf('numel : %d\n', numel(nilaiUjian));
fprintf('length: %d\n', length(nilaiUjian));
fprintf('ndims : %d\n', ndims(nilaiUjian));

Output yang Dihasilkan:

text
size  : 3 x 2
numel : 6
length: 3
ndims : 2

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (nilaiUjian = ...): matriks 3×2 — tiga baris siswa (Budi, Siti, Ana), dua kolom ujian. size mengembalikan [3 2], dan karena fprintf mengonsumsi argumen kolom-per-kolom, dua angka itu mengisi dua %d.
  2. Baris 2 (numel): jumlah elemen = 3 × 2 = 6.
  3. Baris 3 (length): dimensi terbesar — max(size) = 3. Untuk vektor, length memang panjang vektor; untuk matriks persegi panjang, length sering menyesatkan sehingga size lebih aman.
  4. Baris 4 (ndims): selalu minimal 2 — bahkan skalar pun “berdimensi” 2 (1×1).

Urutan Kolom (Column-Major) #

Di dalam memori, elemen array MATLAB disusun berurutan seperti tali satu dimensi. Aturan penyusunannya: kolom demi kolom, atas ke bawah — disebut column-major order. Mekanismenya: elemen kolom pertama ditulis lengkap, disusul kolom kedua, dan seterusnya. Urutan inilah yang menjadi dasar linear indexing — cara menunjuk elemen dengan satu nomor urut.

matlab
papan = [10 20; 30 40; 50 60];

disp(papan);
fprintf('Bacaan linear 1..6: %d %d %d %d %d %d\n', ...
        papan(1), papan(2), papan(3), papan(4), papan(5), papan(6));

Output yang Dihasilkan:

text
    10    20
    30    40
    50    60
Bacaan linear 1..6: 10 30 50 20 40 60

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (papan = ...): matriks 3×2. Secara visual elemen dibaca baris demi baris, tetapi di memori papan tersusun sebagai 10, 30, 50, 20, 40, 60.
  2. Baris 3-4 (papan(1) sampai papan(6)): papan(k) adalah linear index — elemen ke-k dalam tali memori. papan(2) bernilai 30 (bukan 20!) karena urutan kunjungan turun di kolom pertama dulu: 10 → 30 → 50, baru pindah ke kolom kedua: 20 → 40 → 60.

Diagram di atas memperlihatkan pemetaannya: kolom pertama papan menempati posisi memori k = 1..3, kolom kedua menempati k = 4..6. Bahasa lain seperti C dan Python memilih kebalikannya — row-major — sehingga kebiasaan A(4) dari bahasa tersebut harus diluruskan. Kita bedah linear indexing secara penuh, termasuk konversi dua arah baris-kolom, pada Chapter Indexing.

Ringkasan #

MATLAB memandang semua data sebagai array: skalar adalah matriks 1×1, vektor punya dua wajah (1×n dan n×1), dan matriks adalah array dua dimensi yang dapat menjulur menjadi pages dimensi ketiga. Fungsi size, numel, length, dan ndims membaca geometri array tersebut. Yang paling menentukan bagi bab-bab berikutnya: elemen array tersusun column-major — kolom demi kolom — sehingga setiap elemen dapat ditunjuk dengan satu nomor urut linear. Fondasi ini kita gunakan segera untuk membangun array dari nol.