이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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: [0x0 embedded.fi]
B: [0x0 embedded.fi]
X: [0x0 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 = 1.1330e-05
이 파일에 mlint
경고가 표시되지 않도록 합니다.
%#ok<*NASGU> %#ok<*ASGLU>
참고 항목
fixed.complexQRMatrixSolveFixedpointTypes
| Complex Burst Matrix Solve Using QR Decomposition | Complex Partial-Systolic Matrix Solve Using QR Decomposition