Tips Operasi Aritmatika dengan Matriks ukuran besar di Matlab
Berikut ini tips untuk menyelesaikan operasi aritmatik jika matrik yg dikenai operasi sangat besar (memakan banyak memori).
Agar tidak membengkak, maka operasi dapat dilakukan dengan cara dipecah (di-partisi), sehingga operasi tidak dilakukan sekaligus, tapi dalam beberapa step, dengan operasi yg sama. Namun, tips ini hanya berlaku untuk operasi antar-elemen matrik, bukan operasi aritmatika matrik!
Langkah algoritmanya :
- Tentukan banyak elemen/data (m)
- Tentukan jumlah partisi (np)
- Hitung jumlah elemen yg dikenai operasi tiap partisi (k)
- Selama 1<=i<=n-1, lakukan 5-6
- Tentukan nomor data yg dikenai operasi mulai dari k*(i-1)+1 sampai k*(i)
- Lakukan operasi aritmatika berdasarkan nomor data yg telah ditentukan.
Tips ini dapat digunakan untuk mengatasi masalah out of memory ketika melakukan perhitungan, misal operasi penjumlahan dua buah matriks ukuran besar, C=A+B. Namun, dengan menggunakan tips ini, komputasi yg dibutuhkan jauh lebih lambat. Lebih baik lambat daripada error.
Contoh aplikasi algoritma tersebut di matlab, disajikan berikut (contoh ini operasi penjumlahan, tapi bisa diganti dengan yang lain):
clear clc n = 5000; % matrik yang dikenai operasi aritmatika A = rand(n); B = rand(n); % tempat hasil penjumlahan C = zeros(n); m=n*n; % jumlah data (n^2) np = 20; % jumlah pecahan/partisi matrik k = ceil(m / np); % mencari jumlah data dalam tiap partisi % dibulatkan keatas for i=1:np-1 idx = k * (i-1)+1 : k*i; % index tiap partisi (no data) C(idx) = A(idx)+B(idx); % operasi aritmatika - elemen A dgn elemen B end % penjumlahan partisi terakhir idx = k*(np-1)+1 : m; % tidak sampai k*np, karena bisa out of index. C(idx) = A(idx)+B(idx);
Semoga bermanfaat
