Skip to content

Sequential adaptive elastic net (SAEN) approach, complex-valued LARS solver for weighted Lasso/elastic-net problems, and sparsity (or model) order detection with an application to single-snapshot source localization.


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Software Package | SAEN-LARS DOI

  • Version: 1.0.1

  • GitHub Link:

  • Title: Sequential Adaptive Elastic Net Approach and Sparsity (or Model) Order Detection with an Application to Single-snapshot Source Localization

  • Short Title: Sequential Adaptive Elastic Net | Sparsity (or Model) Order Detection

  • Authors: Muhammad Naveed Tabassum and Esa Ollila

  • Maintainer: Muhammad Naveed Tabassum

  • Language: MATLAB

  • Date: 19.03.2018

  • Date (Last update): 20.06.2018


The software package SAEN-LARS provides an implementation (and examples) of algorithms proposed in our following papers:

  1. "Sequential Adaptive Elastic Net Approach for Single-snapshot Source Localization" < >
  2. "Simultaneous Signal Subspace Rank and Model Selection with an Application to Single-snapshot Source Localization" < >

In first paper and accordingly in this package, sequential adaptive elastic net (SAEN) approach applies the complex-valued pathwise method in the weighted elastic-net framework, named as c-PW-WEN, sequentially by decreasing the sparsity level (or order) from 3K to K in three stages. SAEN utilizes smartly chosen adaptive (i.e., data dependent) weights that are based on solutions obtained in the previous stage. The c-PW-WEN algorithm computes the WEN solution paths for different values of EN tuning parameter and then selects the best solution. To achieve this in a computationally efficient way, we develop a homotopy method that is a complex-valued extension of the least angle regression and shrinkage (LARS) algorithm for weighted Lasso problem, which we refer to as c-LARS-WLasso. It is numerically cost effective and avoids an exhaustive grid-search over candidate values of the regularization parameter.

NOTE: The c-PW-WEN algorithm contains both

  • Lasso and EN as special cases for unit weights.
  • Adaptive Lasso and adaptive EN as special cases for data-dependent weights.

For second paper, we develop the c-LARS-GIC method that is a two-stage procedure, where firstly precise values of the regularization parameter, called knots, at which a new predictor variable enters (or leaves) the active sets are computed in the Lasso solution path (using c-LARS-WLasso with unit weights). Active sets provide a nested sequence of regression models and GIC then selects the best model using c-LARS-GIC. The sparsity order of the chosen model serves as an estimate of the model order.

Demo | Example

The package contains a simple demo (Demo.mlx) that explains the usage of algorithms (of first paper) for direction-of-arrival (DoA) estimation with a uniform linear array (ULA) in compressed beamforming (CBF) application. Moreover, an example (Example.m) for setup 4 in the first paper is also included in the package. Another example (Example_GIC.m) in this package is for second simulation setup (i.e., Fig. 2) of the second paper, when the number of sensors in the ULA is n = 40.

NOTE: To have repeatable results, the pseudorandom number generator settings, in terms of seed and type, are provided along with scenarios data in the package as 'seed_data.mat' and 'seed_data_gic.mat'.

Download | Usage

The SAEN-LARS package contains following files:

README: This file.

Functions: Function files for implementation of algorithms proposed in both above mentioned papers.

  • saen.m: The main function, sequential adaptive elastic net (SAEN) approach.
  • cpwwen.m: Auxiliary function, called by the main function three times.
  • clarswlasso.m: Auxiliary function for finding knots and respective solutions at found knots.
  • clarsgic.m: Auxiliary function for detecting the true sparsity (or model) order and estimating corresponding solution.

Usage: The files for the demo and examples.

  • Demo.mlx: A live script demo.
  • Example.m: An example for DoA estimation with a ULA in CBF application.
  • seed_data.mat: Scenario data and pseudorandom number generator settings.
  • Example_GIC.m: An example for detection of sparsity (or model) order, i.e., the number of sources in CBF application.
  • seed_data_gic.mat: Scenario data and pseudorandom number generator settings for application of c-LARS-GIC.

Download the package and extract the files into a folder with “full control” permission. Set the MATLAB home directory to the above folder. Thereafter, open either 'Demo.mlx', 'Example.m' or 'Example_GIC.m' file in MATLAB and follow the steps.