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.
>> skor = 95;
>> size(skor)
ans =
1 1Fungsi 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.
| Bentuk | Ukuran (shape) | Sebutan |
|---|---|---|
5 | 1×1 | skalar / matriks 1×1 |
[10 20 30] | 1×3 | row vector |
[10; 20; 30] | 3×1 | column vector |
[78 84; 92 88] | 2×2 | matriks persegi |
[78 84; 92 88; 85 90] | 3×2 | matriks persegi panjang |
| tumpukan dua matriks 3×2 | 3×2×2 | array 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:
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:
size : 3 x 2
numel : 6
length: 3
ndims : 2Mari kita bedah baris-baris kode di atas:
- Baris 1 (
nilaiUjian = ...): matriks 3×2 — tiga baris siswa (Budi, Siti, Ana), dua kolom ujian.sizemengembalikan[3 2], dan karenafprintfmengonsumsi argumen kolom-per-kolom, dua angka itu mengisi dua%d. - Baris 2 (
numel): jumlah elemen = 3 × 2 = 6. - Baris 3 (
length): dimensi terbesar —max(size)= 3. Untuk vektor,lengthmemang panjang vektor; untuk matriks persegi panjang,lengthsering menyesatkan sehinggasizelebih aman. - 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.
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:
10 20
30 40
50 60
Bacaan linear 1..6: 10 30 50 20 40 60Mari kita bedah baris-baris kode di atas:
- Baris 1 (
papan = ...): matriks 3×2. Secara visual elemen dibaca baris demi baris, tetapi di memoripapantersusun sebagai10, 30, 50, 20, 40, 60. - Baris 3-4 (
papan(1)sampaipapan(6)):papan(k)adalah linear index — elemen ke-kdalam 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.