nrEqualizeMMSE
MMSE(최소평균제곱오차) 이퀄라이제이션
설명
예제
PBCH(physical broadcast channel)의 추출된 리소스 요소에 대해 MMSE 이퀄라이제이션을 수행합니다.
PBCH 송신을 위한 심볼과 인덱스를 만듭니다.
ncellid = 146; v = 0; E = 864; cw = randi([0 1],E,1); pbchTxSym = nrPBCH(cw,ncellid,v); pbchInd = nrPBCHIndices(ncellid);
하나의 송신 안테나에 대해 빈 리소스 배열을 생성합니다. 생성된 PBCH 인덱스를 사용하여 PBCH 심볼로 배열을 채웁니다.
carrier = nrCarrierConfig('NSizeGrid',20);
P = 1;
txGrid = nrResourceGrid(carrier,P);
txGrid(pbchInd) = pbchTxSym;
OFDM 변조를 수행합니다.
[txWaveform,ofdmInfo] = nrOFDMModulate(carrier,txGrid);
채널 행렬을 만들고 송신되는 파형에 이 채널을 적용합니다.
P = 1;
R = 4;
H = randn(P,R,'like',1i);
H = H / norm(H);
rxWaveform = txWaveform * H;
잡음을 추가합니다.
SNRdB = 20; rxWaveform = awgn(rxWaveform,SNRdB,-10*log10(double(ofdmInfo.Nfft)));
채널 추정값과 잡음 추정값을 만듭니다.
hEstGrid = repmat(permute(H.',[3 4 1 2]),[240 4]); nEst = 10^(-SNRdB/10);
OFDM 복조를 수행합니다.
rxGrid = nrOFDMDemodulate(carrier,rxWaveform);
PBCH 디코딩을 준비하기 위해, nrExtractResources
를 사용하여, 수신된 그리드와 채널 추정 그리드에서 심볼을 추출합니다. 수신된 PBCH 성상도를 플로팅합니다.
[pbchRxSym,pbchHestSym] = nrExtractResources(pbchInd,rxGrid,hEstGrid); scatterplot(pbchRxSym(:),[],[],'y+'); title('Received PBCH Constellation');
추출된 리소스 요소를 사용하여 PBCH를 디코딩합니다. 이퀄라이징된 PBCH 성상도를 플로팅합니다.
[pbchEqSym,csi] = nrEqualizeMMSE(pbchRxSym,pbchHestSym,nEst); pbchBits = nrPBCHDecode(pbchEqSym,ncellid,v); scatterplot(pbchEqSym(:),[],[],'y+'); title('Equalized PBCH Constellation');
입력 인수
물리 채널의 추출된 리소스 요소로, NRE×R 숫자형 행렬로 지정됩니다. NRE는 수신된 그리드의 각 K×L 평면에서 추출된 리소스 요소 개수입니다. K는 부반송파 개수이고 L은 OFDM 심볼 개수입니다. R은 수신 안테나 개수입니다.
데이터형: double
복소수 지원 여부: 예
추정된 채널 정보로, NRE×R×P 숫자형 배열로 지정됩니다. NRE는 수신된 그리드의 각 K×L 평면에서 추출된 리소스 요소 개수입니다. K는 부반송파 개수이고 L은 OFDM 심볼 개수입니다. R은 수신 안테나 개수입니다. P는 계층 개수입니다.
데이터형: double
복소수 지원 여부: 예
추정된 잡음 분산으로, 음이 아닌 실수형 스칼라로 지정됩니다.
데이터형: double
출력 인수
이퀄라이징된 심볼로, NRE×P 숫자형 행렬로 반환됩니다. NRE는 수신된 그리드의 각 K×L 평면에서 추출된 리소스 요소 개수입니다. K는 부반송파 개수이고 L은 OFDM 심볼 개수입니다. P는 계층 개수입니다.
데이터형: double
복소수 지원 여부: 예
소프트 채널 상태 정보로, NRE×P 숫자형 행렬로 반환됩니다. NRE는 수신된 그리드의 각 K×L 평면에서 추출된 리소스 요소 개수입니다. K는 부반송파 개수이고 L은 OFDM 심볼 개수입니다. P는 계층 개수입니다. 이 출력값은 각 RE의 SNR을 설명하는 LLR(로그 가능도비) 스케일링 인자입니다.
데이터형: double
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
nrEqualizeMMSE
함수는 GPU 배열을 완전히 지원합니다. GPU에서 함수를 실행하려면 입력 데이터를 gpuArray
(Parallel Computing Toolbox)로 지정합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2018b에 개발됨nrEqualizeMMSE
함수가 이제 GPU 배열을 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)