Progress ReportCompressive Sensing dan Estimasi Arah kedatangan Sinyal
Koredianto UsmanNIM : 33213002
Kamis, 10 April 2014
Basis Pursuit dan CVX Programming
Algoritma Compressive Sensing
Asumsi :
X sinyal sparse
Y compressed sensing dari X
Y = A.X
Rekonstruksi:
Mencari |x|1 minimum sehingga A.X = Y
Ilustrasi
Untuk kemudahan sketsa, diambil kondisi 2 dan 3 variabel
Misalkan x = [0 5]T
A = [0,8 0,6 ]
Maka Y = A X = 0x0,8 + 5x0,6 = 3
Rekonstruksi:
Kemudian digeneralisir menjadi n variabel
Diberikan : Y = [3]Dan A = [0,8 0.6]
Tentukan |X|1 minimal sehingga AX = Y
Ilustrasi | 2 Variabel
Misalkan x = [0 5]T A = [0,6 0,8 ]
Maka Y = A X = 0x0,6 + 5x0,8 = 4
Rekonstruksi:
Kemudian digeneralisir menjadi n variabel
Diberikan : Y = [4]Dan A = [0,6 0.8]
Tentukan |X|1 minimal sehingga AX = Y
Linear Programming : Misalkan X = [x1
x2]T
Maka: AX = 0,6x1 + 0,8x2 = 3
Ilustrasi | 2 VariabelTanpa constraint, maka terdapat banyak solusi dari
0,6x1 + 0,8x2 = 4
X1 X2 [X1, X2]
6.67 0 [6.67 0]
5 1.25 [5 1.25]
1 4.25 [1 4.25]
0 5 [0 5]
Solusi dari persamaan linier
Ilustrasi | 2 VariabelDengan constraint Norm l1, maka hanya ada satu solusi:
0,6x1 + 0,8x
2 = 4
|x|1 = 6
|x|1 = 2
|x|1 = 5
SOLUSI: X = [0 5]
X semula = [0 5]
Ilustrasi | 2 VariabelRefleksi: Seandainya digunakan norm l2:
0,6x1 + 0,8x
2 = 4
|x|2 = 3,98
|x|2 = 2
SOLUSI: X = [2.39
3.19]
X semula = [0 5]
Ilustrasi | 2 VariabelRefleksi: Seandainya digunakan norm l2:
0,6x1 + 0,8x
2 = 4
|x|2 = 3,98
|x|2 = 2
SOLUSI: X = [2.39
3.19]
X semula = [0 5]
Dengan Pseudo Inverse :
Diberikan : Y = [4]Dan A = [0,6 0.8]
A+ = [0.8 0.6]T Sehingga
X = A+y = [2.4 3.2]
Kesimpulan : Menyelesaikan LP dengan minimisasi
Norm L2 sama dengan teknik Pseudo Inverse
Ilustrasi | 2 Variabel
Misalkan x = [0 5]TA = [0,6 0,8 ] (semula)
Maka Y = A X = 0x0,8 + 5x0,6 = 3
Rekonstruksi:
Refleksi: Seandainya matriks CS nya terbalik
Diberikan : Y = [3]Dan A = [0,8 0.6]
Maka: AX = 0,8x1 + 0,6x2 = 3
A = [0,8 0,6 ] (menjadi)
Ilustrasi | 3 Variabel
Misalkan x = [0 5 1]T
A = [ 0.3 0,6 0,4 0.1 0.8 0.3]
Y = A.X = [3.4 4.3]T
Rekonstruksi :
AX = y
Y = A.X = [3.4 4.3]T
A = [ 0.3 0,6 0,4 0.1 0.8 0.3]
Cari X : dengan norm l1 minimal sehingga :
Ilustrasi | 3 Variabel
A = [ 0.3 0,6 0,4 0.1 0.9 0.3]
Jika X = [X1 X2 X3]
Y = A.X = [3.4 4.3]T
Maka AX=y menghasilkan 2 persamaan: 0.3X1 + 0.6X2 + 0.4 X3 = 3.4
…. (f1)0.1X1 + 0.8X2 + 0.3 X3 = 4.3 …. (f2)
Dengan konstrain : |X1| + |X2| + |X3| minimal
Ilustrasi | 3 Variabel
Lagrange Multiplier:0.3X1 + 0.6X2 + 0.4 X3 – 3.4 =
00.1X1 + 0.8X2 + 0.3 X3 – 4.3 = 0Dengan konstrain : |X1| + |X2| + |X3|
minimal
Menjadi:
(0.3X1 + 0.6X2 + 0.4 X3 – 3.4) +
(0.1X1 + 0.8X2 + 0.3 X3 – 4.3)= 0
11.3
5.6
8.5
43
5.3
14.3
A
B
C
P
Q
Q
PA
C
B
Ilustrasi | 3 VariabelInterior Point Algorithm
Dengan konstrain : |X1| + |X2| + |X3| minimal
(0.3X1 + 0.6X2 + 0.4 X3 – 3.4) +
(0.1X1 + 0.8X2 + 0.3 X3 – 4.3)= 0
A
B
C
P
Q
AP
Q
B
C
Z1
Z2
Z1 : Interior point
Z2 : Exterior point
APBQCA : Bidang Convex
Z’1
Z”1
Contoh Algoritma: Primal-Dual
Convex Optimization
CVX - Matlab
CVX adalah ekstensi MEX pada Matlab untuk menyelesaikan Masalah Convex Optimization
Dikembangkan oleh Stephen Boyd (Stanford Univ.)
CVX - Matlab INSTALASI:
CVX – Matlab – RECOVERY REAL%Contoh CS dan recoverynya dengan CVX %Optimization n = 512; %Panjang sampel asalk = 15; %sparsitym = 5 * k; %jumlah sampel yang dikumpulkan %Bangkitkan sinyal xx = genSparse(n,k); %Bangkitkan matriks pengukuranA = genA(n,m); %Hitung sinyal hasil pengukuran yy = A*x; %Rekonstruksi dengan CVXcvx_begin variable xbaru(n); minimize (norm(xbaru ,1)) subject to A* xbaru == y;cvx_end
function x = genSparse(n,k) temp = randperm(n); x = zeros(n,1); x(temp(1:k))=randn(k,1);
Blok CVX
function A = genA(n,m) A = randn(m,n)/sqrt(m); randn(k,1);
CVX - Matlab
Blok CVX
CVX – Matlab – RECOVERY REAL%Contoh CS dan recoverynya dengan CVX %Optimization n = 512; %Panjang sampel asalk = 15; %sparsitym = 5 * k; %jumlah sampel yang dikumpulkan %Bangkitkan sinyal xx = genSparse(n,k); %Bangkitkan matriks pengukuranA = genA(n,m); %Hitung sinyal hasil pengukuran yy = A*x; %Rekonstruksi dengan CVXcvx_begin variable xbaru(n) complex; minimize (norm(xbaru ,1)) subject to A* xbaru == y;cvx_end
function x = genSparse(n,k) temp = randperm(n); x = zeros(n,1); x(temp(1:k))=randn(k,1) + j*randn(k,1);
Blok CVX
function A = genA(n,m) A = randn(m,n)/sqrt(m); randn(k,1);
CVX – Matlab – RECOVERY COMPLEX
Top Related