이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
qammod
직교 진폭 변조(QAM)
설명
예제
QAM을 사용하여 데이터 변조하기
QAM을 사용하여 데이터를 변조하고 결과를 산점도 플롯으로 표시합니다.
변조 차수를 16으로 설정하고 가능한 각 심볼을 포함하는 데이터 벡터를 만듭니다.
M = 16; x = (0:M-1)';
qammod
함수를 사용하여 데이터를 변조합니다.
y = qammod(x,M);
변조된 신호 성상도를 scatterplot
함수를 사용하여 표시합니다.
scatterplot(y)
변조 차수를 256으로 설정하고 변조된 신호의 산점도 플롯을 표시합니다.
M = 256; x = (0:M-1)'; y = qammod(x,M); scatterplot(y)
평균 전력으로 QAM 신호 정규화하기
QAM을 사용하여 랜덤 데이터 심볼을 변조합니다. 평균 신호 전력이 1W가 되도록 변조기 출력을 정규화합니다.
변조 차수를 설정하고 랜덤 데이터를 생성합니다.
M = 64; x = randi([0 M-1],1000,1);
데이터를 변조합니다. 'UnitAveragePower'
이름-값 인수를 사용하여 출력 신호가 평균 전력 1W를 갖도록 설정합니다.
y = qammod(x,M,UnitAveragePower=true);
신호가 단위 평균 전력을 갖는지 확인합니다.
avgPower = mean(abs(y).^2)
avgPower = 1.0070
결과로 생성된 성상도를 플로팅합니다.
scatterplot(y)
title('64-QAM, Average Power = 1 W')
QAM 심볼 순서
그레이, 이진 및 사용자 지정 심볼 매핑에 대한 QAM 성상도를 플로팅합니다.
변조 차수를 설정하고 변조 방식에 대한 전체 심볼 세트가 포함된 데이터 시퀀스를 생성합니다.
M = 16; d = 0:M-1;
데이터를 변조하고 그 성상도를 플로팅합니다. 디폴트 심볼 매핑은 그레이 코드 순서를 사용합니다. 점의 순서는 순차적이지 않습니다.
y = qammod(d,M,PlotConstellation=true);
이진 심볼 매핑을 사용하여 변조 프로세스를 반복합니다. 심볼 매핑은 이진 코드 순서를 따르며 순차적입니다.
z = qammod(d,M,'bin',PlotConstellation=true);
사용자 지정 심볼 매핑을 만듭니다.
smap = randperm(M)-1;
변조를 수행하고 성상도를 플로팅합니다.
w = qammod(d,M,smap,PlotConstellation=true);
비트 입력을 사용한 직교 진폭 변조
64-QAM을 사용하여 비트 시퀀스를 변조합니다. 신호를 잡음이 있는 채널에 통과시킵니다. 결과로 생성된 성상도 다이어그램을 표시합니다.
변조 차수를 설정하고 심볼당 비트 수를 결정합니다.
M = 64; k = log2(M);
이진 데이터 시퀀스를 생성합니다. 이진 입력값을 사용하는 경우 입력의 행 개수는 심볼당 비트 수의 정수 배수여야 합니다.
data = randi([0 1],1000*k,1);
비트 입력을 사용하여 신호를 변조하고 단위 평균 전력을 갖도록 설정합니다.
txSig = qammod(data,M, ... InputType='bit', ... UnitAveragePower=true);
신호를 잡음이 있는 채널에 통과시킵니다.
rxSig = awgn(txSig,25);
성상도 다이어그램을 플로팅합니다.
cd = comm.ConstellationDiagram(ShowReferenceConstellation=false); cd(rxSig)
QAM 고정소수점 신호 복조하기
고정소수점 QAM 신호를 복조하고 데이터가 올바르게 복구되는지 확인합니다.
변조 차수를 64
로 설정하고 심볼당 비트 수를 결정합니다.
M = 64; bitsPerSym = log2(M);
난수 비트를 생성합니다. 비트 모드에서 작업할 때 입력 데이터의 길이는 심볼당 비트 수의 정수 배수여야 합니다.
x = randi([0 1],10*bitsPerSym,1);
이진 심볼 매핑을 사용하여 입력 데이터를 변조합니다. 고정소수점 데이터를 출력하도록 변조기를 설정합니다. 숫자 데이터형은 16비트 워드 길이와 10비트 소수부 길이를 갖는 부호 있는 숫자입니다.
y = qammod(x,M,'bin', ... InputType='bit', ... OutputDataType=numerictype(1,16,10));
64-QAM 신호를 복조합니다. 복조된 데이터가 입력 데이터와 일치하는지 확인합니다.
z = qamdemod(y,M,'bin',OutputType='bit'); s = isequal(x,double(z))
s = logical
1
입력 인수
X
— 입력 신호
스칼라 | 벡터 | 행렬 | 3차원 배열
입력 신호로, 스칼라, 벡터, 행렬 또는 3차원 배열로 지정됩니다. x의 요소는 [0, (M
– 1)] 범위의 이진 값 또는 정수여야 합니다. 여기서 M
은 변조 차수입니다.
참고
입력 신호를 이진 요소로 처리하려면 InputType='bit'
를 지정하십시오. 이진 입력값의 경우 행 개수는 log2(M
)의 정수 배수여야 합니다. log2(M
)비트의 그룹이 하나의 심볼에 매핑됩니다. 여기서 첫 번째 비트는 MSB를 나타내고 마지막 비트는 LSB를 나타냅니다.
데이터형: double
| single
| fi
| int8
| int16
| uint8
| uint16
M
— 변조 차수
양의 정수
변조 차수로, 2의 양의 정수 거듭제곱으로 지정됩니다. 변조 차수는 신호 성상도의 점 개수를 지정합니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
symOrder
— 심볼 순서
'gray'
(디폴트 값) | 'bin'
| 벡터
심볼 순서로, 'gray'
, 'bin'
또는 벡터로 지정됩니다.
'gray'
— 그레이 코드 순서를 사용합니다. 자세한 내용은 그레이 코드 항목을 참조하십시오.'bin'
— 이진 코드 순서를 사용합니다.벡터 — 사용자 지정 심볼 순서 사용
벡터는 [0, (M
– 1)] 범위의 고유한 요소를 사용해야 합니다. 첫 번째 요소는 성상도의 왼쪽 위 점에 대응되며, 그 다음 요소들은 왼쪽에서 오른쪽으로 열을 따라 내려갑니다.
예: [0 3 1 2]
데이터형: string
| char
| double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: y = qammod(x,M,symOrder,'InputType','bit')
InputType
— 입력 유형
'integer'
(디폴트 값) | 'bit'
입력 유형으로, 'integer'
또는 'bit'
로 지정됩니다.
'integer'
를 지정하는 경우 입력 신호는 [0, (M
– 1)] 범위의 정수로 구성되어야 합니다.'bit'
를 지정하는 경우, 입력 신호는 이진 값을 포함해야 하며 행 개수는 log2(M
)의 정수 배수여야 합니다.
UnitAveragePower
— 단위 평균 전력 플래그
false
또는 0
(디폴트 값) | true
또는 1
단위 평균 전력 플래그로, 숫자형 또는 논리값 0
(false
) 또는 1
(true
)로 지정됩니다.
이 플래그가
1
(true
)이면, 함수는 성상도를 1옴을 기준으로 평균 전력 1와트로 스케일링합니다.이 플래그가
0
(false
)이면, 함수는 QAM 성상도 점이 최소 거리 2만큼 떨어져 있도록 성상도를 스케일링합니다.
OutputDataType
— 출력 데이터형
numerictype
객체
출력 데이터형으로, numerictype
객체로 지정됩니다. 이러한 객체를 생성하는 방법에 대한 자세한 내용은 numerictype
(Fixed-Point Designer) 항목을 참조하십시오.
이 속성을 지정하지 않은 경우 입력의 데이터형이
double
형 또는 내장 정수형이면 출력 데이터형이double
형이 됩니다.입력의 데이터형이
single
형이면 출력 데이터형이single
형이 됩니다.
PlotConstellation
— 성상도를 플로팅하는 옵션
false
또는 0
(디폴트 값) | true
또는 1
성상도를 플로팅하는 옵션으로, 숫자형 또는 논리값 0
(false
) 또는 1
(true
)로 지정됩니다. QAM 성상도를 플로팅하려면 PlotConstellation=true
를 지정하십시오.
출력 인수
Y
— 변조된 신호
스칼라 | 벡터 | 행렬 | 3차원 배열
변조된 신호로, 복소수 스칼라, 벡터, 행렬 또는 숫자형 값으로 구성된 3차원 배열로 반환됩니다.
출력 데이터형에 대한 자세한 내용은 OutputDataType
항목을 참조하십시오.
데이터형: double
| single
| fi
| int8
| int16
| uint8
| uint16
세부 정보
그레이 코드
그레이 코드는 반사 이진 코드라고도 하며, 인접한 성상도 점의 비트 패턴이 1비트만 다른 시스템입니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열 입력을 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
고정소수점 출력 데이터형이 지원되지 않습니다.
버전 내역
R2006a 이전에 개발됨R2023b: GPU 배열 지원이 추가됨
qammod
함수가 GPU(그래픽스 처리 장치)에서 코드를 실행하기 위해 gpuArray
(Parallel Computing Toolbox) 객체를 처리하는 기능을 추가로 지원합니다.
R2018b: 초기 위상 입력이 제거됨
R2018b부터는 더 이상 qammod
함수를 사용하여 QAM 성상도의 초기 위상을 오프셋할 수 없습니다.
QAM 변조 데이터의 초기 위상을 조정하려면 대신 genqammod
를 사용하여 변조되는 데이터의 초기 위상을 오프셋하거나, 다음과 같이 qammod
출력에 원하는 초기 위상을 곱합니다.
y = qammod(x,M) .* exp(1i*initPhase)
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)