ngodingdulu

Matriks di MATLAB: Membuat dan Operasi Matriks Lengkap

Oleh Afa HernandesDiperbarui 8 menit baca

Seri · Bagian 2 dari 6Belajar MATLAB dari Dasar
  1. 1Perintah Dasar MATLAB untuk Pemula
  2. 2Matriks di MATLAB: Membuat dan Operasi Matriks Lengkap
  3. 3Mengenal GUIDE untuk Membuat GUI di MATLAB
  4. 4Membuat Kalkulator dengan GUI MATLAB
  5. 5Operasi Matriks Menggunakan GUI MATLAB
  6. 6Cara Membuat Background Gambar & Teks Transparan di GUI MATLAB
Daftar isi

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:

  1. Skalar, vektor, dan matriks
  2. Mengakses dan mengubah elemen (indeks)
  3. Matriks khusus dan deret
  4. Manipulasi bentuk matriks
  5. Operasi matriks: penjumlahan, perkalian, dan transpos
  6. Operasi elemen-per-elemen
  7. Menyelesaikan sistem persamaan linear

Semua contoh bisa diketik langsung di Command Window. Tanda >> adalah prompt MATLAB, jadi tidak perlu diketik.

Logo MATLAB dengan grafik permukaan tiga dimensi

Skalar, vektor, dan matriks

Matriks ditulis di dalam kurung siku [ ]. Spasi atau koma memisahkan kolom, dan titik koma memisahkan baris.

Command Window
>> 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 90

Tambahkan 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.

Command Window
>> gabung_samping = [vektor_kolom M] % 3×1 dan 3×3 → 3×4
gabung_samping =
2 10 20 30
4 40 50 60
6 70 80 90
>> gabung_bawah = [vektor_baris; M] % 1×3 dan 3×3 → 4×3
gabung_bawah =
3 5 7
10 20 30
40 50 60
70 80 90

Ukuran 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:

Command Window
>> vektor_baris(1) = 1000 % ubah satu elemen
>> M(3,:) = 0 % ubah seluruh baris 3 menjadi 0
>> M(:,2) = [] % hapus kolom 2

Matriks 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.

Command Window
>> 5 * ones(2,4)
ans =
5 5 5 5
5 5 5 5
>> [eye(3) -ones(3)] % gabungan identitas 3×3 dan -1 3×3
ans =
1 0 0 -1 -1 -1
0 1 0 -1 -1 -1
0 0 1 -1 -1 -1

Untuk membangkitkan bilangan acak normal dengan mean dan varians tertentu, geser dan skalakan hasil randn:

Command Window
>> mu = 5; varians = 3;
>> data = sqrt(varians) * randn(1,20) + mu; % 20 bilangan acak, mean 5, varians 3

Membuat 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]:

Command Window
>> 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.

Command Window
>> A = [0 1; 2 3]; B = [4 5; 6 7];
>> A + B
ans =
4 6
8 10
>> A - B
ans =
-4 -4
-4 -4
>> A + 50
ans =
50 51
52 53

Perkalian 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₂₂
Command Window
>> A * B
ans =
6 7
26 31
>> B * A
ans =
10 19
14 27

Hasilnya 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:

Command Window
>> x = [3 2 1]; y = [100; 10; 1];
>> x * y
ans =
321
>> y * x
ans =
300 200 100
30 20 10
3 2 1

Dot 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
Command Window
>> dot([1 2 3], [4 5 6])
ans =
32
>> cross([1 2 3], [4 5 6])
ans =
-3 6 -3

Transpos

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 .'.

Command Window
>> K = [1+2i 3i; 1 2+3i];
>> K' % transpos + konjugasi
ans =
1.0000 - 2.0000i 1.0000 + 0.0000i
0.0000 - 3.0000i 2.0000 - 3.0000i
>> K.' % transpos saja
ans =
1.0000 + 2.0000i 1.0000 + 0.0000i
0.0000 + 3.0000i 2.0000 + 3.0000i

Untuk 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.

Command Window
>> A = [1 -2; 1 5]; B = [7 5; 2 0];
>> A .* B % bandingkan dengan A * B
ans =
7 -10
2 0
>> A * B
ans =
3 5
17 5
>> B ./ A
ans =
7.0000 -2.5000
2.0000 0
>> B .^ 2
ans =
49 25
4 0
>> 2 .^ B
ans =
128 32
4 1

Perhatikan 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:

Command Window
>> a = [3 2 1]; c = [10; 20; 30];
>> a .* c
ans =
30 20 10
60 40 20
90 60 30

Error 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₂ = 32
12x₁ + 5x₂ = 7

Dalam bentuk matriks A·x = b, dengan A = [1 −2; 12 5] dan b = [32; 7]. Di MATLAB, gunakan operator backslash \:

Command Window
>> A = [1 -2; 12 5]; b = [32; 7];
>> x = A \ b
x =
6
-13

Jadi 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

  1. Buat deret berikut dengan operator titik dua, linspace, atau logspace:
    • 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⁶
  2. Dari A = magic(4), ambil sub-matriks 2×2 di pojok kanan bawah.
  3. Selesaikan SPL tiga variabel berikut:
x + 2y + 3z = 2
4x + 5y + 6z = -5.5
7x + 8y − 9z = -49

Kunci jawaban:

  1. x = -10:10, y = 7.5:-0.5:0, z = 1:3:100 (34 elemen), w = logspace(-3,6,10)
  2. A(3:4, 3:4) atau A(end-1:end, end-1:end)
  3. [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.

Bagikan:WhatsAppTelegramXFacebook
Operasi Matriks Menggunakan GUI MATLAB
MATLABTutorial

Operasi Matriks Menggunakan GUI MATLAB

Lanjutan dari operasi hitung matriks pada post sebelumnya yaitu Operasi Matriks Pada Matlab, Sekarang kita akan membuat Desain GUI untuk Operasi Matriks

3 Februari 20212 mnt

Membuat Kalkulator dengan GUI MATLAB
MATLABTutorial

Membuat Kalkulator dengan GUI MATLAB

Untuk membuat diesain GUI atau membuat layout pada matlab, pada Command Window kita masukan perintah Guide. Maka akan muncul jendela Guide Quick Start.

3 Februari 20214 mnt

Enter bukaEsc tutupHalaman pencarian