Main Content

rcosdesign

올림 코사인 FIR 펄스 성형 필터 설계

설명

예제

b = rcosdesign(beta,span,sps)beta로 지정된 롤오프 인자를 갖는 제곱근 올림 코사인 FIR 필터에 대응되는 계수 b를 반환합니다. 이 필터는 span개 심볼로 잘립니다. 각 심볼 주기에는 sps개 샘플이 포함됩니다. 필터의 차수 sps*span은 짝수여야 합니다. 필터 에너지는 1입니다.

예제

b = rcosdesign(beta,span,sps,shape)shape"sqrt"로 설정하는 경우 제곱근 올림 코사인 필터를 반환하고, shape"normal"로 설정하는 경우 정규 올림 코사인 FIR 필터를 반환합니다.

예제

모두 축소

롤오프 인자를 0.25로 지정합니다. 필터를 6개 심볼로 자르고 각 심볼을 4개 샘플로 나타냅니다. "sqrt"shape 파라미터의 디폴트 값인지 확인합니다.

h = rcosdesign(0.25,6,4);
mx = max(abs(h-rcosdesign(0.25,6,4,"sqrt")))
mx = 0
impz(h)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

정규 올림 코사인 필터와 제곱근 코사인 필터를 비교합니다. 이상적인(무한 길이) 정규 올림 코사인 펄스 성형 필터는 종속 연결 내 두 개의 이상적인 제곱근 올림 코사인 필터와 동일합니다. 따라서, FIR 정규 필터의 임펄스 응답은 제곱근 필터 자체를 컨벌루션한 결과의 임펄스 응답과 유사해야 합니다.

롤오프를 0.25로 지정하여 정규 올림 코사인 필터를 생성합니다. 이 필터가 심볼당 3개의 샘플로 구성된, 4개 심볼을 포함하도록 지정합니다.

rf = 0.25;
span = 4;
sps = 3;

h1 = rcosdesign(rf,span,sps,"normal");
impz(h1)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

정규 필터는 sps의 정수 배가 되는 지점에 영점교차를 가집니다. 이런 식으로 이 필터는 심볼간 간섭을 0으로 만드는 나이퀴스트 판별법을 충족합니다. 하지만 제곱근 필터는 이를 충족하지 않습니다.

h2 = rcosdesign(rf,span,sps,"sqrt");
impz(h2)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

제곱근 필터를 그 자체와 컨벌루션합니다. 길이가 h1이 되도록 최댓값을 벗어나는 임펄스 응답을 자릅니다. 최댓값을 사용하여 응답을 정규화합니다. 컨벌루션된 제곱근 필터를 정규 필터와 비교합니다.

h3 = conv(h2,h2,"same");

stem(0:span*sps,[h1/max(abs(h1));h3/max(abs(h3))]',"filled")
xlabel("Samples")
ylabel("Normalized Amplitude")
legend("h1","h2 * h2")

Figure contains an axes object. The axes object with xlabel Samples, ylabel Normalized Amplitude contains 2 objects of type stem. These objects represent h1, h2 * h2.

컨벌루션된 응답은 길이가 유한하기 때문에 정규 필터와 일치하지 않습니다. 응답들이 서로 더 근접하도록 만들고 나이퀴스트 판별법을 더 잘 준수하도록 span을 늘리십시오.

이 예제에서는 제곱근 올림 코사인 필터에 신호를 통과시키는 방법을 보여줍니다.

필터 파라미터를 지정합니다.

rolloff = 0.25;     % Rolloff factor
span = 6;           % Filter span in symbols
sps = 4;            % Samples per symbol

제곱근 올림 코사인 필터 계수를 생성합니다.

b = rcosdesign(rolloff, span, sps);

양극성 데이터로 구성된 벡터를 생성합니다.

d = 2*randi([0 1], 100, 1) - 1;

펄스 성형을 위해 데이터를 업샘플링하고 필터를 적용합니다.

x = upfirdn(d, b, sps);

잡음을 추가합니다.

r = x + randn(size(x))*0.01;

정합 필터링(Matched Filtering)을 위해 수신된 신호에 필터를 적용하고 다운샘플링합니다.

y = upfirdn(r, b, 1, sps);

제곱근 올림 코사인 필터를 사용하여 신호를 보간하고 데시메이션하는 방법에 대한 자세한 내용은 RRC 필터를 사용하여 보간 및 데시메이션하기 (Communications Toolbox) 항목을 참조하십시오.

입력 인수

모두 축소

롤오프 인자로, 1보다 크지 않은 음이 아닌 실수형 스칼라로 지정됩니다. 롤오프 인자는 필터의 초과 대역폭을 결정합니다. 롤오프가 0이면 벽돌담 필터(Brick-Wall Filter)이고 단위 롤오프는 순수 올림 코사인 필터에 해당됩니다.

데이터형: double | single

심볼 수로, 양의 정수 스칼라로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

심볼당 샘플 수(오버샘플링 인자)로, 양의 정수 스칼라로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

올림 코사인 윈도우의 형태로, "normal" 또는 "sqrt"로 지정됩니다.

출력 인수

모두 축소

올림 코사인 필터 계수로, 행 벡터로 반환됩니다.

데이터형: double

  • Communications Toolbox™의 라이선스가 있으면 스트리밍 동작을 갖는 멀티레이트 올림 코사인 필터를 적용할 수 있습니다. 이렇게 하려면 System object™ 필터 comm.RaisedCosineTransmitFiltercomm.RaisedCosineReceiveFilter를 사용해야 합니다.

참고 문헌

[1] Tranter, William H., K. Sam Shanmugan, Theodore S. Rappaport, and Kurt L. Kosbar. Principles of Communication Systems Simulation with Wireless Applications. Upper Saddle River, NJ: Prentice Hall, 2004.

확장 기능

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

버전 내역

R2013b에 개발됨

참고 항목

도움말 항목