# Optimization Lab for Communication and Signal Processing Using MATLAB (OptiLab)

This Lab is about learning how to recognize, model and solve optimization problems. Covered topics include but are not limited to:- Linear Programming
- Quadratic Programming and Least-Squares Problems
- Regularized Approximation and Estimation
- Linear Quadratic Stochastic Control
- Second-order Cone Programming
- Semidefinite Programming

## Requirements

Students are expected to have basic Matlab knowledge to take this lab.
If you have never used Matlab before, the pace of the lab will almost certainly be too fast for you.
In order to ensure that each participant has the required Matlab level, there will be a multiple choice test about the basics of Matlab at the beginning of the first session (10.04.2014) of the lab.

**I) General Matlab knowledge**

- a) Basic variables: scalars, vectors, matrices
- b) Basic syntax: for, while, if then else
- c) Basic operations: addition, multiplication, logical operators
- d) Basic functions: sqrt, log, min, max, round, sum, rand, randn
- e) Graphical representation: plot, surf

**II) Linear Algebra with Matlab**

- a) Vector/matrix multiplication
- b) Built-in functions: inverse, eigenvalues, diag
- c) Special matrices: identity matrix, zeros matrix, ones matrix

## Reading assignments

In each session, you will receive a reading assignment (from 5 to 20 pages) for the subsequent session. At the beginning of each session, there will be a multiple choice test to check if you read and understood the material covered in the reading assignment.## Material

**1 | Preliminaries I: Linear algebra and vector analysis**

You will need the following three .mat files: [channel_imp_response.mat], [single_sensor_failure.mat] and [double_sensor_failure.mat].

**2 | Preliminaries II: Convex optimization**

You will need the Matlab function

**combn**, which you can find at the Mathworks website: [combn].

To initialize CVX you should put the following line at the beginning of each MATLAB script in which you want to use it.

`run ~/matlab/startup.m`

**5 | Quadratic programming**

You will need the following .mat file: [data_problem_1.mat]

Also, you will need the following function: [DesiredFrequencyResponse.m]

**7 | Approximation, vector optimization and regularization**

You will need the following .mat files: [data_robust_regression.mat] [data_l1_trend_filtering.mat] [data_l1_discussion.mat] [data_sparse_signal_recovery.mat]

**8 | Semidefinite programming**

You will need the following .mat file: [sensor_selection.mat]