Main Content


Select most informative bands


newhcube = selectBands(hcube,endmembers) selects the most informative bands of the hyperspectral data cube by using orthogonal space projection method [1]. The function returns a new hypercube object that contains the data from only the most informative bands.


  • For preprocessing, the function removes the water absorption and low signal-to-noise ratio (SNR) bands prior to computing the most informative bands.

  • To reduce the computational complexity, the function computes the most informative bands by considering only 10% of the pixel values in the pre-processed data cube. These values are selected randomly. The function also ensures that the random selection does not result in the removal of endmembers.

[newhcube,band] = selectBands(hcube,endmembers) also returns the band numbers of the most informative bands in the hyperspectral data cube.


[___] = selectBands(hcube,endmembers,'NumberOfBands',numBands) additionally specifies the number of most informative bands to select from the input data cube, in addition to any combination of arguments from previous syntaxes.


This function requires the Image Processing Toolbox™ Hyperspectral Imaging Library. You can install the Image Processing Toolbox Hyperspectral Imaging Library from Add-On Explorer. For more information about installing add-ons, see Get and Manage Add-Ons.


collapse all

Read hyperspectral data into the workspace.

hcube = hypercube('paviaU.dat');

Estimate the endmembers of the data cube by using the FIPPI algorithm.

endmembers = fippi(hcube,9);

Create a new hypercube consisting of the ten most informative bands.

newhcube = selectBands(hcube,endmembers,'NumberOfBands',10);

Input Arguments

collapse all

Input hyperspectral data, specified as a hypercube object. The DataCube property of the hypercube object contains the hyperspectral data cube.

Spectral signatures of the endmembers, specified as a matrix of size C-by-K. C is the number of spectral bands in the hyperspectral data cube and K is the number of endmembers of the hyperspectral data cube. Use the fippi, ppi, or nfindr function to find the endmembers of a hyperspectral data cube.

Data Types: single | double

Number of most informative bands to select from the data cube, specified as a scalar.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Output Arguments

collapse all

Output hyperspectral data, returned as a hypercube object.

Spectral band number of the most informative bands in the input data cube, returned as a positive integer or a vector of positive integers.

Data Types: double


[1] Du, Qian, and He Yang. “Similarity-Based Unsupervised Band Selection for Hyperspectral Image Analysis.” IEEE® Geoscience and Remote Sensing Letters, Vol. 5, no. 4 (October 2008): 564–68.

Introduced in R2020a