Main Content

fixed.complexConditionNumberUpperBound

Estimate of upper bound for 2-norm condition number of complex-valued matrix

Since R2022b

Description

C = fixed.complexConditionNumberUpperBound(m,n,max_abs_A,noiseStandardDeviation) returns an estimate of an upper bound for the 2-norm condition number of a complex-valued m-by-n matrix A, where max_abs_A >= max(abs(A(:))) and noiseStandardDeviation is the standard deviation of the additive random noise in A.

example

C = fixed.complexConditionNumberUpperBound(___,p_s) uses the probability p_s that the estimate of the lower bound of the smallest singular value is larger than the actual smallest singular value. p_s is an optional parameter. If not supplied or empty, then the default value is used.

example

C = fixed.complexConditionNumberUpperBound(___,regularizationParameter) returns an estimate of an upper bound for the 2-norm condition number of a complex-valued matrix [λInA], where λ is the regularizationParameter, A is an m-by-n matrix with m >= n, and In = eye(n). regularizationParameter is an optional parameter. If not supplied or empty, then the default value is used.

example

Examples

collapse all

Estimate an upper bound for the 2-norm condition number of a low rank, complex-valued matrix with additive noise.

Define a complex matrix A with additive noise.

m = 300;
n = 10;
rankA = 3;
A = fixed.example.complexRandomLowRankMatrix(m,n,rankA);

noiseStandardDeviation = sqrt(10^(-50/10));
A = A + fixed.example.complexNormalRandomArray(0,...
    noiseStandardDeviation,m,n);

Estimate an upper bound for the condition number of the matrix A.

C = fixed.complexConditionNumberUpperBound(m,n,...
    max(abs(A(:))),noiseStandardDeviation)
C =

   1.4375e+03

Compare to the actual condition number of the matrix.

C_actual = cond(A)
C_actual =

  304.4858

Estimate an upper bound for the 2-norm condition number of a low rank, complex-valued matrix with additive noise, using the regularization parameter.

Define a complex matrix A with additive noise.

m = 300;
n = 10;
rankA = 3;
A = fixed.example.complexRandomLowRankMatrix(m,n,rankA);

noiseStandardDeviation = sqrt(10^(-50/10));
A = A + fixed.example.complexNormalRandomArray(0,...
    noiseStandardDeviation,m,n);

Define the regularization parameter.

regularizationParameter = 0.01;
A = [regularizationParameter*eye(n);A];

Estimate an upper bound for the condition number of the matrix A with the regularization parameter. Use the default value for p_s.

C = fixed.complexConditionNumberUpperBound(m,n,max(abs(A(:))),...
    noiseStandardDeviation,[],regularizationParameter)
C =

   1.3946e+03

Compare to the actual condition number of the matrix.

C_actual = cond(A)
C_actual =

  291.7264

Estimate an upper bound for the 2-norm condition number of a full rank random matrix with normally distributed elements.

Define a full rank, random, complex matrix A with normally distributed elements.

m = 300;
n = 10;
noiseStandardDeviation = 1;
A = fixed.example.complexNormalRandomArray(0,...
    noiseStandardDeviation,m,n);

Estimate an upper bound for the condition number of the matrix A.

C = fixed.complexConditionNumberUpperBound(m,n,...
    max(abs(A(:))),noiseStandardDeviation)
C =

   12.0438

Compare to the actual condition number of the matrix.

C_actual = cond(A)
C_actual =

    1.3560

Input Arguments

collapse all

Number of rows in matrix A, specified as a positive integer-valued scalar. The number of rows, m, must be greater than or equal to the number of columns, n.

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

Number of columns in matrix A, specified as a positive integer-valued scalar. The number of rows, m, must be greater than or equal to the number of columns, n.

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

Maximum of absolute value of matrix A, specified as a scalar.

Example: max_abs_A >= max(abs(A(:)))

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

Standard deviation of additive random noise in matrix A, specified as a scalar.

If noiseStandardDeviation is not supplied or empty, then the default value is used, which is the standard deviation of the quantization noise,

σq=2precisionBits12.

This value is calculated by the function fixed.complexQuantizationNoiseStandardDeviation.

If noiseStandardDeviation is zero, then fixed.singularValueLowerBound will return zero for the estimate of the smallest singular value and fixed.complexConditionNumberUpperBound will return an infinite condition number.

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

Probability that estimate of lower bound of smallest singular value is larger than actual smallest singular value of matrix A, specified as a scalar.

If p_s is not supplied or empty, then the default of p_s = (1/2)*(1+erf(-5/sqrt(2))) = 2.8665e-07 is used, which is five standard deviations below the mean. So, the probability that the estimated lower bound for the smallest singular value is less than the actual smallest singular value is 1 - p_s = 0.99999971 - p_s = 0.9999997.

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

Regularization parameter, specified as a nonnegative scalar.

regularizationParameter is the Tikhonov regularization parameter of the matrix [regularizationParameter*eye(n); A], where A is an m-by-n matrix with m >= n.

Data Types: single | double

More About

collapse all

Algorithms

The condition number with respect to the inversion of matrix A is the ratio of the largest singular value of A to the smallest singular value of A. The fixed.complexSingularValueLowerBound function estimates the lower bound of the smallest singular value, s_n, of A. The fixed.singularValueUpperBound function determines an upper bound for the largest singular value, svdUpperBound, of A. A bound on the condition number of A is then cond(A) = max(svd(A))/min(svd(A)) <= svdUpperBound/s_n [1] [2] [3].

References

[1] Bryan, Thomas A., Jenna L. Warren, Shixin Zhuang, and Jessica Clayton. “Systems and Methods for Design Parameter Selection.” The MathWorks. US Patent 12,008,344 B2, issued June 11, 2024. https://patents.google.com/patent/US12008344B2/en?oq=US+12%2c008%2c344+B2

[2] Bryan, Thomas A., and Jenna L. Warren. “Systems and Methods for Design Parameter Selection.” The MathWorks. US Patent 12,045,737 B2, issued July 23, 2024. European EP 3,944,105 A1. https://patents.google.com/patent/US12045737B2/en?oq=US+12%2c045%2c737+B2.

[3] Chen, Zizhong and Jack J. Dongarra. "Condition Numbers of Gaussian Random Matrices." SIAM Journal on Matrix Analysis and Applications 27, no. 3 (July 2005): 603-620. https://doi.org/10.1137/040616413.

Extended Capabilities

expand all

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2022b