pskdemod
M진 PSK 방식을 사용하여 복조
구문
설명
은 M-PSK 성상도의 위상 오프셋을 지정합니다.Z
= pskdemod(Y
,M
,phaseoffset
)
는 M-PSK 성상도의 심볼 순서를 지정합니다.Z
= pskdemod(Y
,M
,phaseoffset
,symorder
)
는 위에 열거된 구문 중 하나를 사용하여 선택적 이름-값 인수를 지정합니다. 예를 들어, Z
= pskdemod(___,Name=Value
)pskdemod(Y,M,PlotConstellation=true)
는 변조 차수 M
을 사용하여 복조를 수행하고 성상도를 플로팅합니다. 이름-값 인수는 다른 모든 입력 인수 다음에 지정하십시오.
예제
PSK 신호와 PAM 신호에서 위상 잡음의 영향 비교하기
PSK 변조 방식과 PAM 변조 방식을 비교하여 PSK가 위상 잡음에 더 민감하다는 것을 보여줍니다. PSK 성상도는 원형이고 PAM 성상도는 선형이기 때문에 PSK가 위상 잡음에 더 민감합니다.
심볼 개수 및 변조 차수 파라미터를 지정합니다. 랜덤 데이터 심볼을 생성합니다.
len = 10000; M = 16; msg = randi([0 M-1],len,1);
위상 잡음 System object™를 만들고 구성된 설정을 표시합니다.
phasenoise = comm.PhaseNoise(Level=[-70 -80])
phasenoise = comm.PhaseNoise with properties: Level: [-70 -80] FrequencyOffset: [2000 20000] SampleRate: 1000000 RandomStream: 'Global stream'
두 방식을 비교하기 위해 PSK와 PAM을 모두 사용하여 msg
를 변조합니다.
txpsk = pskmod(msg,M); txpam = pammod(msg,M);
변조된 신호의 위상을 섭동합니다.
rxpsk = phasenoise(txpsk); rxpam = phasenoise(txpam);
수신된 신호의 산점도 플롯을 만듭니다.
scatterplot(rxpsk);
title('Noisy PSK Scatter Plot')
scatterplot(rxpam);
title('Noisy PAM Scatter Plot')
수신된 신호를 복조합니다.
recovpsk = pskdemod(rxpsk,M); recovpam = pamdemod(rxpam,M);
각 변조 방식에 대한 심볼 오류 개수를 계산합니다. PSK 신호에서 훨씬 더 많은 개수의 심볼 오류가 발생합니다.
numerrs_psk = symerr(msg,recovpsk); numerrs_pam = symerr(msg,recovpam); [numerrs_psk numerrs_pam]
ans = 1×2
795 3
AWGN에서 QPSK 신호를 변조 및 복조하기
랜덤 심볼을 생성합니다.
dataIn = randi([0 3],1000,1);
데이터에 대해 QPSK 변조를 수행합니다.
txSig = pskmod(dataIn,4,pi/4);
신호를 AWGN 채널에 통과시킵니다.
rxSig = awgn(txSig,10);
수신된 신호를 복조하고 심볼 오류 수를 계산합니다.
dataOut = pskdemod(rxSig,4,pi/4); numErrs = symerr(dataIn,dataOut)
numErrs = 3
PSK 심볼 매핑
변조 차수를 설정한 후 전체 성상도 점 세트를 포함하는 데이터 시퀀스를 생성합니다.
M = 8; data = (0:M-1); phaseoffset = 0;
그레이 코드와 이진 코드로 변조하고 복조한 데이터에 대해 8-PSK 심볼 매핑의 성상도 플롯을 시각화합니다.
symgray = pskmod(data,M,phaseoffset,'gray',PlotConstellation=true, ... InputType='integer');
mapgray = pskdemod(symgray,M,phaseoffset,'gray',OutputType='integer'); symbin = pskmod(data,M,phaseoffset,'bin'); mapbin = pskdemod(symbin,M,phaseoffset,'bin',PlotConstellation=true, ... OutputType='bit');
입력 인수
Y
— M-PSK 변조 입력 신호
스칼라 | 벡터 | 행렬
M-PSK 변조 입력 신호로, 스칼라, 벡터 또는 행렬로 지정됩니다. Y
가 행렬인 경우 함수는 열을 개별적으로 처리합니다.
데이터형: double
| single
복소수 지원 여부: 예
M
— 변조 차수
양의 정수
변조 차수로, 1보다 큰 정수 값으로 지정됩니다.
데이터형: double
phaseoffset
— 위상 오프셋
0
(디폴트 값) | 스칼라
PSK 성상도의 위상 오프셋(단위: 라디안)으로, 스칼라로 지정됩니다.
데이터형: double
symorder
— 심볼 순서
'gray'
(디폴트 값) | 'bin'
| 벡터
심볼 순서로, 'gray'
, 'bin'
또는 벡터로 지정됩니다. 이 인수는 함수가 이진 벡터를 대응하는 정수에 할당하는 방법을 지정합니다.
'gray'
— 그레이 코드 순서를 사용합니다.'bin'
— 이진 코드 순서를 사용합니다.벡터 –– 사용자 지정 심볼 순서를 사용합니다. 벡터는 [0,
M
– 1] 범위 내의 고유 값을 포함하고 길이가M
인 벡터입니다. 첫 번째 요소는 각도phaseoffset
에 상응하는 성상도 점을 의미하며, 그 다음 요소들은 반시계 방향으로 진행됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: Z = pskdemod(Y,M,phaseoffset,symorder,OutputType='bit')
OutputType
— 출력 유형
'integer'
(디폴트 값) | 'bit'
| 'llr'
| 'approxllr'
출력 유형으로, 'integer'
, 'bit'
, 'llr'
또는 'approxllr'
로 지정됩니다.
OutputDataType
— 출력의 데이터형
'double'
| 'single'
| ...
출력의 데이터형으로, 다음 표에 나열된 데이터형 중 하나로 지정됩니다. OutputDataType
에 허용되는 값은 OutputType
값에 따라 달라집니다.
OutputType 값 | 허용되는 OutputDataType 값 |
---|---|
'integer' | 'double' , 'single' , 'int8' , 'int16' , 'int32' , 'uint8' , 'uint16' , 'uint32' |
'bit' | 'double' , 'single' , 'int8' , 'int16' , 'int32' , 'uint8' , 'uint16' , 'uint32' , 'logical' |
디폴트 값은 입력 Y
의 데이터형입니다.
종속 관계
이 인수를 사용하려면 OutputType
을 'integer'
또는 'bit'
로 설정하십시오.
NoiseVariance
— 잡음 분산
1
(디폴트 값) | 양의 스칼라 | 양수 값으로 구성된 벡터
잡음 분산으로, 다음 옵션 중 하나로 지정됩니다.
양의 스칼라 — 모든 입력 요소에 동일한 잡음 분산 값을 사용합니다.
양수 값으로 구성된 벡터 — 대응하는 마지막 차원을 따라 입력값의 모든 요소에 대해, 벡터의 각 요소에 의해 지정된 잡음 분산을 사용합니다. 벡터 길이는 입력 신호의 열 개수와 같아야 합니다.
복조 함수에는 복소수 입력 신호가 필요합니다. BPSK의 경우 변조기는 허수부 값이 0인 복소 신호를 출력합니다. 복조기에 실수 신호를 입력하는 경우에는 분산 값을 실수 값 입력 신호 분산의 두 배로 설정해서 복소 신호의 잡음 파워를 실수 값 입력 신호로 표현해야 합니다.
팁
엄밀한 LLR 알고리즘은 유한 정밀도 연산방식을 사용하여 지수를 계산합니다. 크기가 매우 큰 양수나 음수가 포함된 계산일 경우 엄밀한 LLR 알고리즘은 다음과 같은 결과를 생성합니다.
잡음 분산이 매우 큰 값인 경우
Inf
또는-Inf
잡음 분산과 신호 전력이 모두 매우 작은 값인 경우
NaN
근사 LLR 알고리즘은 지수를 계산하지 않습니다. 근사 LLR 알고리즘을 사용하면 Inf
, -Inf
, NaN
결과값이 생성되는 것을 피할 수 있습니다.
종속 관계
이 인수는 OutputType
을 'llr'
또는 'approxllr'
로 설정한 경우 적용됩니다.
데이터형: double
PlotConstellation
— 성상도를 플로팅하는 옵션
false
또는 0
(디폴트 값) | true
또는 1
성상도를 플로팅하는 옵션으로, 논리값 0
(false
) 또는 1
(true
)로 지정됩니다. 성상도를 플로팅하려면 PlotConstellation
을 true
로 설정하십시오.
데이터형: logical
출력 인수
Z
— M-PSK 복조 출력 신호
스칼라 | 벡터 | 행렬
M-PSK 복조 출력 신호로, 스칼라, 벡터 또는 행렬로 반환됩니다. 이 출력값의 값과 차원은 다음 표에 지정된 OutputType
값에 따라 다릅니다.
OutputType | pskdemod 출력값 | 출력값의 차원 |
---|---|---|
'integer' | [0, M – 1] 범위의 복조된 정수 값 | Z 는 입력 Y 와 동일한 차원을 갖습니다. |
'bit' | 복조된 비트 | Z 의 행 개수는 Y 의 행 개수의 log2(M )배입니다. 함수는 각 복조 심볼을 log2(M )비트의 그룹에 매핑합니다. 여기서 첫 번째 비트는 MSB를 나타내고 마지막 비트는 LSB를 나타냅니다. |
'llr' | 정확한 로그 가능도 알고리즘을 사용하여 계산된, 각 비트의 로그 가능도비 값. 자세한 내용은 Exact LLR Algorithm 항목을 참조하십시오. | |
'approxllr' | 각 비트의 근사 로그 가능도비 값. 값은 근사 로그 가능도 알고리즘을 사용하여 계산됩니다. 자세한 내용은 Approximate LLR Algorithm 항목을 참조하십시오. |
참고 문헌
[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열 입력을 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2024b: GPU 배열 지원이 추가됨
pskdemod
함수가 GPU(그래픽스 처리 장치)에서 코드를 실행하기 위해 gpuArray
(Parallel Computing Toolbox) 객체를 처리하는 기능을 추가로 지원합니다.
R2022a: 함수에 대한 새로운 개선 사항
이제 다음과 같은 작업을 수행할 수 있습니다.
OutputType
인수를 사용하여 이진 출력을 지정할 수 있습니다.symorder
인수를 사용하여 사용자 지정 심볼 매핑을 지정할 수 있습니다. 이제 디폴트 값은'gray'
심볼 매핑입니다.비트별 로그 가능도 또는 근사 로그 가능도 알고리즘을 사용하여 연판정 복조를 수행할 수 있습니다.
OutputDataType
인수를 사용하여 모든 내장 숫자 데이터형을 지정할 수 있습니다.PlotConstellation
인수를 사용하여 기준 성상도를 시각화할 수 있습니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)