Berikut adalah fungsi LMS dalam bahasa pemrograman MATLAB yang memungkinkan Anda untuk mengimplementasikan algoritma Least Mean Squares (LMS).
Fungsi ini menerima parameter learning_rate, num_weights, serta input lainnya seperti input_signal dan desired_signal.
function [weights, error_signal, output_signal] = LMS(input_signal, desired_signal, learning_rate, num_weights)
% Fungsi LMS untuk meminimalkan kesalahan antara sinyal input dan sinyal yang diinginkan
%
% input_signal: Sinyal input (vektor)
% desired_signal: Sinyal yang diinginkan (vektor)
% learning_rate: Laju pembelajaran (skalar)
% num_weights: Jumlah bobot yang digunakan dalam filter
%
% weights: Bobot yang dihasilkan oleh algoritma LMS
% error_signal: Sinyal kesalahan yang dihasilkan selama proses pembelajaran
% output_signal: Sinyal output yang dihasilkan oleh filter adaptif
% Inisialisasi variabel
num_samples = length(input_signal); % Jumlah sampel dalam sinyal input
weights = zeros(num_weights, 1); % Inisialisasi bobot awal
error_signal = zeros(num_samples, 1); % Inisialisasi sinyal kesalahan
output_signal = zeros(num_samples, 1); % Inisialisasi sinyal output
% Loop melalui sinyal input
for n = num_weights:num_samples
% Ambil vektor input yang sesuai dengan bobot
x = input_signal(n:-1:n-num_weights+1); % Sinyal input yang dilipat
% Hitung sinyal output
output_signal(n) = weights' * x;
% Hitung sinyal kesalahan
error_signal(n) = desired_signal(n) - output_signal(n);
% Perbarui bobot berdasarkan sinyal kesalahan
weights = weights + learning_rate * error_signal(n) * x;
end
end
Penjelasan Fungsi:
Parameter Input:
input_signal
: Sinyal input ke filter adaptif.desired_signal
: Sinyal yang diharapkan atau sinyal target.learning_rate
: Laju pembelajaran (mu
), yang menentukan seberapa besar pembaruan bobot dilakukan di setiap iterasi.num_weights
: Jumlah bobot (koefisien filter) yang digunakan dalam model.
Variabel Keluaran:
weights
: Bobot akhir setelah proses pembelajaran selesai.error_signal
: Sinyal kesalahan di setiap iterasi, yang menunjukkan perbedaan antara sinyal yang diinginkan dan output filter.output_signal
: Sinyal output yang dihasilkan oleh filter adaptif.
Proses:
- Looping dilakukan untuk setiap sampel dalam sinyal input setelah jumlah bobot tercapai.
- Dalam setiap iterasi, sinyal input saat ini dan beberapa sampel sebelumnya digunakan untuk menghitung output filter.
- Bobot diperbarui secara iteratif berdasarkan kesalahan yang dihitung di setiap langkah.
Contoh Penggunaan:
% Contoh sinyal input dan sinyal yang diinginkan
input_signal = randn(1000, 1); % Sinyal input acak
desired_signal = filter([1, -0.5], 1, input_signal) + 0.1*randn(1000, 1);
% Sinyal target
% Parameter LMS
learning_rate = 0.01;
num_weights = 4;
% Panggil fungsi LMS
[weights, error_signal, output_signal] = LMS(input_signal, desired_signal, learning_rate, num_weights);
% Plot hasil
figure;
subplot(3,1,1); plot(input_signal); title('Sinyal Input');
subplot(3,1,2); plot(desired_signal); title('Sinyal Target');
subplot(3,1,3); plot(output_signal); title('Sinyal Output oleh LMS');
Kode ini memberikan implementasi dasar dari algoritma LMS yang dapat disesuaikan lebih lanjut sesuai kebutuhan spesifik aplikasi pengendalian Anda.