Tikhonov 정규화를 사용하여 복소수 최소제곱 행렬 해의 고정소수점 데이터형 결정하기
이 예제에서는 fixed.complexQRMatrixSolveFixedpointTypes 함수를 사용하여 복소수 최소제곱 행렬 방정식 해의 고정소수점 데이터형을 해석적으로 결정하는 방법을 보여줍니다.
여기서 는 인 × 행렬이고, 는 ×이며, 는 ×이고, , 이며 는 정규화 파라미터입니다.
최소제곱해는 다음과 같지만
제곱 또는 역수를 취하지 않고 계산됩니다.
시스템 파라미터 정의하기
이 예제에 대한 행렬 특성과 시스템 파라미터를 정의합니다.
m은 행렬 A와 B의 행 개수입니다. 빔포밍 또는 방향 탐지 같은 문제에서는 m은 적분이 수행되는 샘플의 수에 해당합니다.
m = 300;
n은 행렬 A의 열 개수와 행렬 X의 행 개수입니다. 최소제곱 문제에서 m은 n보다 크며, 대개 m이 n보다 훨씬 큽니다. 빔포밍 또는 방향 탐지 같은 문제에서는 n은 센서 수에 해당합니다.
n = 10;
p는 행렬 B와 X의 열 개수입니다. 이는 p의 우변을 사용하여 시스템의 해를 동시에 구하는 것과 같습니다.
p = 1;
이 예제에서는 행렬 A의 랭크를 열 개수보다 작은 값으로 설정합니다. 빔포밍 또는 방향 탐지 같은 문제에서 는 센서 배열에 입사하는 신호 수에 해당합니다.
rankA = 3;
precisionBits는 행렬 풀이에 필요한 정밀도 비트 수를 정의합니다. 시스템 요구 사항에 따라 이 값을 설정하십시오.
precisionBits = 32;
정규화 파라미터의 값이 작고 양수이면 문제의 조건을 개선하고 추정값 분산을 줄일 수 있습니다. 편향이 생기는 반면에, 추정값 분산이 줄어들면 최소제곱해 추정값과 비교했을 때 평균제곱오차가 더 작아지는 경우가 많습니다.
regularizationParameter = 0.01;
이 예제에서 복소수 값 행렬 A와 B는 이들 요소의 실수부와 허수부의 크기가 1보다 작거나 같도록 생성되었습니다. 따라서 모든 요소의 가능한 최대 절댓값은 입니다. 이들 값은 사용자 시스템의 요구 사항에 따라 정의합니다. 사용자가 값을 모르고 있고 시스템에서 A와 B를 고정소수점 입력값으로 사용한다면, upperbound 함수를 사용하여 A와 B의 고정소수점 데이터형의 상한을 결정할 수 있습니다.
max_abs_A는 A의 최대 크기 요소에 대한 상한입니다.
max_abs_A = sqrt(2);
max_abs_B는 B의 최대 크기 요소에 대한 상한입니다.
max_abs_B = sqrt(2);
열 잡음 표준편차는 열 잡음 파워의 제곱근으로, 시스템 파라미터입니다. 잘 설계된 시스템의 양자화 수준은 열 잡음보다 낮습니다. 여기서 thermalNoiseStandardDeviation을 dB 잡음 파워에 상응하는 값으로 설정하십시오.
thermalNoiseStandardDeviation = sqrt(10^(-50/10))
thermalNoiseStandardDeviation = 0.0032
양자화 잡음 표준편차는 필요한 정밀도 비트 수의 함수입니다. fixed.complexQuantizationNoiseStandardDeviation 항목을 사용하여 이를 계산하십시오. 이 값이 thermalNoiseStandardDeviation보다 작은지 확인하십시오.
quantizationNoiseStandardDeviation = fixed.complexQuantizationNoiseStandardDeviation(precisionBits)
quantizationNoiseStandardDeviation = 9.5053e-11
고정소수점 데이터형 계산하기
이 예제에서는 설계된 시스템 행렬 가 완전 랭크를 갖지 않으며(관심 신호 수가 행렬 의 열 개수보다 작음), 측정된 시스템 행렬 에 양자화 잡음보다 더 큰 가산성 열 잡음이 있다고 가정합니다. 이 가산성 잡음은 측정된 행렬 가 완전 랭크를 갖도록 만듭니다.
를 설정합니다.
noiseStandardDeviation = thermalNoiseStandardDeviation;
fixed.complexQRMatrixSolveFixedpointTypes 항목을 사용하여 고정소수점 데이터형을 계산합니다.
T = fixed.complexQRMatrixSolveFixedpointTypes(m,n,max_abs_A,max_abs_B,...
precisionBits,noiseStandardDeviation,[],regularizationParameter)T = struct with fields:
A: [0×0 embedded.fi]
B: [0×0 embedded.fi]
X: [0×0 embedded.fi]
T.A는 를 오버플로 없이 인 플레이스(in-place) 대입으로 변환하기 위해 계산된 유형입니다.
T.A
ans =
[]
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 40
FractionLength: 32
T.B는 를 오버플로 없이 인 플레이스(in-place) 대입으로 변환하기 위해 계산된 유형입니다.
T.B
ans =
[]
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 40
FractionLength: 32
T.X는 해 에 대해 계산된 유형으로, 오버플로 확률이 낮습니다.
T.X
ans =
[]
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 44
FractionLength: 32
지정된 유형을 사용하여 행렬 방정식 풀기
확률 행렬 A와 B를 생성합니다. 이때 B가 A의 치역 내에 있고 rankA=rank(A)가 성립되도록 합니다. 랜덤 측정 잡음을 A에 추가하여 행렬이 완전 랭크 행렬이 되게 합니다. 하지만 이렇게 하면 해도 영향을 받아서 B가 A 치역의 근사치가 되게 됩니다.
rng('default');
[A,B] = fixed.example.complexRandomLeastSquaresMatrices(m,n,p,rankA);
A = A + fixed.example.complexNormalRandomArray(0,noiseStandardDeviation,m,n);입력값을 fixed.complexQRMatrixSolveFixedpointTypes에 의해 결정된 유형으로 형변환합니다. 고정소수점으로 양자화하는 것은 랜덤 잡음 [4,5]를 추가하는 것과 동일합니다.
A = cast(A,'like',T.A); B = cast(B,'like',T.B);
fiaccel 함수로 fixed.qrMatrixSolve 함수를 가속화하여 MATLAB® 실행 가능(MEX) 함수를 생성합니다.
fiaccel fixed.qrMatrixSolve -args {A,B,T.X,regularizationParameter} -o qrMatrixSolve_mex
출력 유형 T.X를 지정하고 QR 메서드를 사용하여 고정소수점 를 계산합니다.
X = qrMatrixSolve_mex(A,B,T.X,regularizationParameter);
출력값 정확도 확인하기
고정소수점 출력값과 디폴트 배정밀도 부동소수점 값을 사용한 MATLAB 출력값 사이의 상대 오차가 작은지 확인합니다.
A_lambda = double([regularizationParameter*eye(n);A]); B_0 = [zeros(n,p);double(B)]; X_double = A_lambda\B_0; relativeError = norm(X_double - double(X))/norm(X_double)
relativeError = 5.3070e-06
이 파일에 mlint 경고가 표시되지 않도록 합니다.
%#ok<*NASGU> %#ok<*ASGLU>
참고 항목
툴
함수
블록
- Complex Burst Matrix Solve Using QR Decomposition | Complex Partial-Systolic Matrix Solve Using QR Decomposition
도움말 항목
- Implement Hardware-Efficient Complex Partial-Systolic Matrix Solve Using QR Decomposition
- Implement Hardware-Efficient Complex Partial-Systolic Matrix Solve Using QR Decomposition with Diagonal Loading
- Implement Hardware-Efficient Complex Partial-Systolic Matrix Solve Using QR Decomposition with Tikhonov Regularization
- Algorithms to Determine Fixed-Point Types for Complex Least-Squares Matrix Solve AX=B
- Determine Fixed-Point Types for Complex Least-Squares Matrix Solve AX=B