Matriks di MATLAB: Membuat dan Operasi Matriks Lengkap
Oleh Afa HernandesDiperbarui 8 menit baca
Seri · Bagian 2 dari 6Belajar MATLAB dari Dasar
Daftar isi
- Skalar, vektor, dan matriks
- Menggabungkan matriks
- Ukuran matriks
- Indeks: mengakses dan mengubah elemen
- Matriks khusus
- Membuat deret
- Manipulasi bentuk matriks
- Operasi matriks
- Penjumlahan dan pengurangan
- Perkalian matriks
- Dot product dan cross product
- Transpos
- Operasi elemen-per-elemen
- Implicit expansion (MATLAB R2016b ke atas)
- Menyelesaikan sistem persamaan linear
- Latihan
- Error yang sering muncul
- Pertanyaan yang sering diajukan
- Kesimpulan
MATLAB adalah singkatan dari MATrix LABoratory. Namanya sudah menunjukkan bahwa matriks adalah tipe data utama di MATLAB. Bahkan satu angka pun disimpan sebagai matriks berukuran 1×1. Karena itu, memahami matriks adalah kunci untuk menguasai MATLAB.
Panduan ini membahas semuanya dari awal:
- Skalar, vektor, dan matriks
- Mengakses dan mengubah elemen (indeks)
- Matriks khusus dan deret
- Manipulasi bentuk matriks
- Operasi matriks: penjumlahan, perkalian, dan transpos
- Operasi elemen-per-elemen
- Menyelesaikan sistem persamaan linear
Semua contoh bisa diketik langsung di Command Window. Tanda >> adalah prompt MATLAB, jadi tidak perlu diketik.

Skalar, vektor, dan matriks
Matriks ditulis di dalam kurung siku [ ]. Spasi atau koma memisahkan kolom, dan titik koma memisahkan baris.
>> skalar = 3.1415 % matriks 1×1>> vektor_baris = [3 5 7] % 1 baris × 3 kolom (bisa juga [3, 5, 7])>> vektor_kolom = [2; 4; 6] % 3 baris × 1 kolom>> M = [10 20 30; 40 50 60; 70 80 90]M = 10 20 30 40 50 60 70 80 90Tambahkan titik koma di akhir perintah (misalnya M = [1 2; 3 4];) jika tidak ingin hasilnya ditampilkan.
Menggabungkan matriks
Matriks yang sudah ada bisa digabung, asalkan ukurannya cocok: jumlah baris harus sama untuk digabung ke samping, dan jumlah kolom harus sama untuk digabung ke bawah.
>> gabung_samping = [vektor_kolom M] % 3×1 dan 3×3 → 3×4gabung_samping = 2 10 20 30 4 40 50 60 6 70 80 90
>> gabung_bawah = [vektor_baris; M] % 1×3 dan 3×3 → 4×3gabung_bawah = 3 5 7 10 20 30 40 50 60 70 80 90Ukuran matriks
| Fungsi | Hasil | Contoh untuk M (3×3) |
|---|---|---|
size(M) |
jumlah baris dan kolom | 3 3 |
[b, k] = size(M) |
baris dan kolom ke variabel terpisah | b = 3, k = 3 |
length(v) |
panjang dimensi terbesar | length(vektor_baris) → 3 |
numel(M) |
jumlah seluruh elemen | 9 |
Indeks: mengakses dan mengubah elemen
Indeks di MATLAB dimulai dari 1 (bukan 0 seperti di C atau Python). Formatnya M(baris, kolom). Tanda titik dua : berarti “semua” atau “rentang”, dan kata kunci end menunjuk indeks terakhir.
| Perintah | Arti | Hasil dari M |
|---|---|---|
M(1,2) |
baris 1, kolom 2 | 20 |
M(2,:) |
seluruh baris 2 | 40 50 60 |
M(:,3) |
seluruh kolom 3 | 30; 60; 90 |
M(1:2, 2:3) |
baris 1–2, kolom 2–3 | [20 30; 50 60] |
M(end,end) |
elemen terakhir | 90 |
M(M > 50) |
semua elemen yang lebih dari 50 | 70; 80; 60; 90 |
Hasil M(M > 50) urutannya 70, 80, 60, 90 karena MATLAB menyimpan matriks per kolom (column-major): kolom 1 dulu, lalu kolom 2, lalu kolom 3.
Indeks juga dipakai untuk mengubah elemen:
>> vektor_baris(1) = 1000 % ubah satu elemen>> M(3,:) = 0 % ubah seluruh baris 3 menjadi 0>> M(:,2) = [] % hapus kolom 2Matriks khusus
| Fungsi | Membuat |
|---|---|
zeros(m,n) |
matriks berisi 0 |
ones(m,n) |
matriks berisi 1 |
eye(n) |
matriks identitas (diagonal 1, lainnya 0) |
rand(m,n) |
bilangan acak uniform antara 0 dan 1 |
randn(m,n) |
bilangan acak normal dengan mean 0 dan varians 1 |
magic(n) |
matriks ajaib (jumlah tiap baris, kolom, dan diagonal sama) |
[] |
matriks kosong (0×0) |
Jika hanya diberi satu argumen, misalnya zeros(3), hasilnya matriks persegi 3×3.
>> 5 * ones(2,4)ans = 5 5 5 5 5 5 5 5
>> [eye(3) -ones(3)] % gabungan identitas 3×3 dan -1 3×3ans = 1 0 0 -1 -1 -1 0 1 0 -1 -1 -1 0 0 1 -1 -1 -1Untuk membangkitkan bilangan acak normal dengan mean dan varians tertentu, geser dan skalakan hasil randn:
>> mu = 5; varians = 3;>> data = sqrt(varians) * randn(1,20) + mu; % 20 bilangan acak, mean 5, varians 3Membuat deret
| Cara | Contoh | Hasil |
|---|---|---|
awal:akhir |
1:5 |
1 2 3 4 5 |
awal:langkah:akhir |
0:2:10 |
0 2 4 6 8 10 |
| langkah negatif | 10:-2:0 |
10 8 6 4 2 0 |
linspace(a,b,n) |
linspace(0,1,5) |
0 0.25 0.5 0.75 1 |
logspace(a,b,n) |
logspace(0,2,3) |
1 10 100 |
linspace membuat n titik berjarak sama antara a dan b. logspace membuat n titik berjarak sama secara logaritmik antara 10ᵃ dan 10ᵇ, yang sering dipakai untuk sumbu frekuensi.
Manipulasi bentuk matriks
Misalkan A = [0:3; 4:7]:
>> A = [0:3; 4:7]A = 0 1 2 3 4 5 6 7| Perintah | Fungsi | Hasil |
|---|---|---|
fliplr(A) |
balik kiri ↔ kanan | [3 2 1 0; 7 6 5 4] |
flipud(A) |
balik atas ↔ bawah | [4 5 6 7; 0 1 2 3] |
rot90(A) |
putar 90° berlawanan jarum jam | [3 7; 2 6; 1 5; 0 4] |
A' |
transpos (baris jadi kolom) | [0 4; 1 5; 2 6; 3 7] |
reshape(A,4,2) |
susun ulang jadi 4×2 | [0 2; 4 6; 1 3; 5 7] |
reshape(A,1,8) |
susun ulang jadi 1×8 | 0 4 1 5 2 6 3 7 |
reshape mengambil elemen per kolom (0, 4, 1, 5, …), lalu mengisinya ke bentuk baru, juga per kolom. Jumlah elemen sebelum dan sesudah harus sama.
Operasi matriks
Penjumlahan dan pengurangan
A + B dan A - B hanya bisa dilakukan jika ukuran A dan B sama. Operasi dengan skalar diterapkan ke setiap elemen.
>> A = [0 1; 2 3]; B = [4 5; 6 7];>> A + Bans = 4 6 8 10>> A - Bans = -4 -4 -4 -4>> A + 50ans = 50 51 52 53Perkalian matriks
A * B adalah perkalian matriks sesuai aljabar linear. Syaratnya, jumlah kolom A sama dengan jumlah baris B. Untuk matriks 2×2, setiap elemen hasil adalah jumlah perkalian baris A dengan kolom B:
| Elemen hasil | Rumus |
|---|---|
| c₁₁ | a₁₁·b₁₁ + a₁₂·b₂₁ |
| c₁₂ | a₁₁·b₁₂ + a₁₂·b₂₂ |
| c₂₁ | a₂₁·b₁₁ + a₂₂·b₂₁ |
| c₂₂ | a₂₁·b₁₂ + a₂₂·b₂₂ |
>> A * Bans = 6 7 26 31>> B * Aans = 10 19 14 27Hasilnya berbeda. Perkalian matriks tidak komutatif: A*B umumnya tidak sama dengan B*A.
Vektor juga mengikuti aturan yang sama. Vektor baris 1×3 dikali vektor kolom 3×1 menghasilkan skalar (1×1), sedangkan urutan sebaliknya menghasilkan matriks 3×3:
>> x = [3 2 1]; y = [100; 10; 1];>> x * yans = 321>> y * xans = 300 200 100 30 20 10 3 2 1Dot product dan cross product
| Fungsi | Rumus untuk x = (x₁, x₂, x₃), y = (y₁, y₂, y₃) | Hasil |
|---|---|---|
dot(x,y) |
x₁y₁ + x₂y₂ + x₃y₃ | skalar |
cross(x,y) |
(x₂y₃ − x₃y₂, x₃y₁ − x₁y₃, x₁y₂ − x₂y₁) | vektor |
>> dot([1 2 3], [4 5 6])ans = 32>> cross([1 2 3], [4 5 6])ans = -3 6 -3Transpos
Operator petik tunggal ' menukar baris dengan kolom. Untuk matriks bilangan kompleks, ' juga mengambil konjugatnya (tanda bagian imajiner dibalik). Jika hanya ingin transpos tanpa konjugasi, gunakan .'.
>> K = [1+2i 3i; 1 2+3i];>> K' % transpos + konjugasians = 1.0000 - 2.0000i 1.0000 + 0.0000i 0.0000 - 3.0000i 2.0000 - 3.0000i>> K.' % transpos sajaans = 1.0000 + 2.0000i 1.0000 + 0.0000i 0.0000 + 3.0000i 2.0000 + 3.0000iUntuk matriks bilangan riil, ' dan .' memberi hasil yang sama.
Operasi elemen-per-elemen
Sering kali kita tidak ingin perkalian matriks, tetapi ingin mengalikan elemen yang posisinya sama. Untuk itu, tambahkan titik di depan operator:
| Operator | Arti |
|---|---|
.* |
kali elemen-per-elemen |
./ |
bagi elemen-per-elemen |
.^ |
pangkat elemen-per-elemen |
+ dan - tidak butuh titik karena memang sudah elemen-per-elemen.
>> A = [1 -2; 1 5]; B = [7 5; 2 0];>> A .* B % bandingkan dengan A * Bans = 7 -10 2 0>> A * Bans = 3 5 17 5>> B ./ Aans = 7.0000 -2.5000 2.0000 0>> B .^ 2ans = 49 25 4 0>> 2 .^ Bans = 128 32 4 1Perhatikan perbedaan A .* B dan A * B. Lupa menambahkan titik adalah salah satu kesalahan paling umum di MATLAB, misalnya saat menghitung x.^2 untuk membuat grafik.
Implicit expansion (MATLAB R2016b ke atas)
Sejak versi R2016b, MATLAB otomatis “memperluas” vektor agar ukurannya cocok. Vektor baris 1×3 dikali elemen-per-elemen dengan vektor kolom 3×1 kini menghasilkan matriks 3×3, sedangkan di versi lama operasi ini error:
>> a = [3 2 1]; c = [10; 20; 30];>> a .* cans = 30 20 10 60 40 20 90 60 30Error baru muncul jika ukurannya benar-benar tidak bisa dicocokkan, misalnya [1 2 3] .* [1 2].
Menyelesaikan sistem persamaan linear
Matriks sangat praktis untuk menyelesaikan sistem persamaan linear (SPL). Contoh:
x₁ − 2x₂ = 3212x₁ + 5x₂ = 7Dalam bentuk matriks A·x = b, dengan A = [1 −2; 12 5] dan b = [32; 7]. Di MATLAB, gunakan operator backslash \:
>> A = [1 -2; 12 5]; b = [32; 7];>> x = A \ bx = 6 -13Jadi x₁ = 6 dan x₂ = −13. Cek: 6 − 2·(−13) = 32 ✓ dan 12·6 + 5·(−13) = 7 ✓.
Cara lain adalah x = inv(A) * b. Hasilnya sama, tetapi A \ b lebih disarankan karena lebih cepat dan lebih akurat secara numerik, terutama untuk matriks besar. Fungsi terkait lainnya adalah det(A) untuk determinan (di sini 29) dan inv(A) untuk invers.
Latihan
- Buat deret berikut dengan operator titik dua,
linspace, ataulogspace:- x = −10, −9, …, 9, 10
- y = 7.5, 7.0, 6.5, …, 0.5, 0
- z = 1, 4, 7, 10, …, 100
- w = 0.001, 0.01, 0.1, …, 10⁶
- Dari
A = magic(4), ambil sub-matriks 2×2 di pojok kanan bawah. - Selesaikan SPL tiga variabel berikut:
x + 2y + 3z = 24x + 5y + 6z = -5.57x + 8y − 9z = -49Kunci jawaban:
x = -10:10,y = 7.5:-0.5:0,z = 1:3:100(34 elemen),w = logspace(-3,6,10)A(3:4, 3:4)atauA(end-1:end, end-1:end)[1 2 3; 4 5 6; 7 8 -9] \ [2; -5.5; -49]menghasilkan x = −5, y = 0.5, z = 2
Error yang sering muncul
Incorrect dimensions for matrix multiplication. Anda memakai * pada dua matriks yang jumlah kolom dan barisnya tidak cocok. Jika maksudnya perkalian elemen-per-elemen, gunakan .*.
Arrays have incompatible sizes for this operation. Ukuran dua matriks tidak bisa dicocokkan untuk operasi elemen-per-elemen. Periksa ukurannya dengan size().
Index exceeds the number of array elements. Indeks melebihi ukuran matriks, misalnya v(4) untuk vektor yang hanya punya 3 elemen. Ingat, indeks dimulai dari 1 dan berakhir di end.
Number of elements must not change. Bentuk baru di reshape membutuhkan jumlah elemen yang berbeda. Gunakan [] untuk salah satu ukuran agar dihitung otomatis, misalnya reshape(A, [], 2).
Array indices must be positive integers or logical values. Anda memakai indeks 0 atau bilangan desimal, misalnya M(0,1). Indeks MATLAB dimulai dari 1.
Pertanyaan yang sering diajukan
Apakah kode ini bisa dijalankan tanpa lisensi MATLAB? Bisa. GNU Octave adalah alternatif gratis yang sintaksnya hampir sama, dan semua contoh di artikel ini berjalan di Octave. Ada juga MATLAB Online, yang bisa dicoba gratis dengan batasan waktu.
Apa bedanya length dan numel?
length mengembalikan ukuran dimensi terbesar (untuk matriks 3×5 hasilnya 5), sedangkan numel mengembalikan jumlah seluruh elemen (15).
Kesimpulan
Di MATLAB, semuanya adalah matriks. Kuasai cara membuat matriks dengan [ ], mengakses elemen dengan M(baris, kolom) dan :, membedakan * (perkalian matriks) dari .* (elemen-per-elemen), dan menyelesaikan SPL dengan A \ b. Dengan dasar ini, Anda siap mempelajari GUI MATLAB dan pengolahan citra digital.
Lanjutkan ke bagian berikutnya di seri Belajar MATLAB dari Dasar: mengenal GUIDE untuk membuat GUI.

