Main Content

demod

통신 시뮬레이션의 복조

설명

예제

x = demod(y,fc,fs,method)method에 지정된 방법을 사용하여 실수 반송파 신호 y를 반송 주파수 fc 및 샘플 레이트 fs로 복조합니다.

x = demod(y,fc,fs,method,opt)opt에 지정된 추가 옵션을 사용하여 실수 반송파 신호 y를 복조합니다.

예제

모두 축소

1초 동안 8kHz로 샘플링된 150Hz 정현파를 생성합니다. 변조된 신호에 분산이 0.1²인 백색 가우스 잡음을 포함시킵니다.

fs = 8e3;

t = 0:1/fs:1-1/fs;
s = cos(2*pi*150*t) + randn(size(t))/10;

변조 상수 0.1을 사용하여 반송 주파수 3kHz에서 신호를 주파수 변조합니다.

fc = 3e3;
rx = modulate(s,fc,fs,'fm',0.1);

동일한 반송 주파수와 변조 상수를 사용하여 신호를 주파수 복조합니다. 전송된 신호, 수신된 신호, 복조된 신호의 파워 스펙트럼 추정값을 계산하고 플로팅합니다.

y = demod(rx,fc,fs,'fm',0.1);

pspectrum([s;rx;y]',fs,'Leakage',0.85)

legend('Transmitted signal','Received signal','Demodulated signal','Location','best')

입력 인수

모두 축소

변조된 메시지 신호로, 실수형 벡터 또는 실수 행렬로 지정됩니다. 방법 pwmppm의 경우를 제외하고, yx와 크기가 동일합니다.

메시지 신호를 변조하는 데 사용되는 반송 주파수로, 양의 실수형 스칼라로 지정됩니다.

샘플 레이트로, 양의 실수형 스칼라로 지정됩니다.

사용된 변조 방법으로, 다음 중 하나로 지정됩니다.

  • am 또는 amdsb-sc — 진폭 복조, 양측파대, 억압 반송파. y에 주파수가 fc인 정현파를 곱하고, filtfilt를 사용하여 5차 버터워스 저역통과 필터를 적용합니다.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);
  • amdsb-tc — 진폭 복조, 양측파대, 전송 반송파. y에 주파수가 fc인 정현파를 곱하고, filtfilt를 사용하여 5차 버터워스 저역통과 필터를 적용합니다.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);

    opt를 지정하면 demodx에서 스칼라 opt를 뺍니다. opt의 디폴트 값은 0입니다.

  • amssb — 진폭 복조, 단측파대. y에 주파수가 fc인 정현파를 곱하고, filtfilt를 사용하여 5차 버터워스 저역통과 필터를 적용합니다.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);
  • fm — 주파수 복조. y의 힐베르트 변환을 주파수가 -fcHz인 복소수 지수로 변조하여 FM 파형을 복조하고 결과의 순시 주파수를 구합니다.

    y=cos(2*pi*fc*t + opt*cumsum(x))

    cumsumx의 적분에 대한 사각 근삿값입니다. modulateopt를 주파수 변조의 상수로 사용합니다. opt 파라미터를 지정하지 않으면 modulateopt = (fc/fs)*2*pi/(max(max(x)))의 디폴트 값을 사용하며, 따라서 fc의 최대 주파수 편위는 fcHz가 됩니다.

  • pm — 위상 복조. y의 힐베르트 변환을 주파수가 -fcHz인 복소수 지수로 변조하여 PM 파형을 복조하고 결과의 순시 위상을 구합니다.

    y=cos(2*pi*fc*t + opt*x)

    modulateopt를 위상 변조 상수로 사용합니다. opt 파라미터를 지정하지 않으면 modulateopt = pi/(max(max(x)))의 디폴트 값을 사용하며, 따라서 최대 위상 편위는 π라디안이 됩니다.

  • pwm — 펄스 폭 복조. 펄스 폭 변조 신호 y의 펄스 폭을 구합니다. demod는 요소가 각 펄스의 폭을 한 주기에 대한 비율로 지정하는 벡터를 x에 반환합니다. y의 펄스는 각 반송파 주기의 시작 부분에서 시작해야 합니다. 즉, 왼쪽으로 정렬되어야 합니다. modulate(x,fc,fs,'pwm','centered')는 중심이 각 주기의 시작 부분에 맞춰진 펄스를 생성합니다. y의 길이는 length(x)*fs/fc입니다.

  • ppm — 펄스 위치 복조. 펄스 위치 변조 신호 y의 펄스 위치를 구합니다. 복조가 올바르게 수행되려면 펄스가 중첩되면 안 됩니다. x는 길이 length(t)*fc/fs입니다.

  • qam — 직교 진폭 복조. [x1,x2] = demod(y,fc,fs,'qam')y에 주파수가 fc인 코사인과 사인을 곱하고, filtfilt를 사용하여 5차 버터워스 저역통과 필터를 적용합니다.

    x1 = y.*cos(2*pi*fc*t);
    x2 = y.*sin(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x1 = filtfilt(b,a,x1);
    x2 = filtfilt(b,a,x2);

    입력 인수 opty와 크기가 동일해야 합니다.

선택적 입력값으로, 일부 방법에 대해 지정됩니다. opt를 사용하는 방법에 대한 자세한 내용은 method를 참조하십시오.

출력 인수

모두 축소

복조된 메시지 신호로, 실수형 벡터 또는 실수 행렬로 반환됩니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | (Communications Toolbox) | (Communications Toolbox) | (Communications Toolbox) | (Communications Toolbox) | (Communications Toolbox) | (Communications Toolbox)