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);

제곱근 올림 코사인 필터를 사용하여 신호를 보간하고 데시메이션하는 방법에 대한 자세한 내용은 Interpolate and Decimate Using RRC Filter (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에 개발됨

참고 항목

도움말 항목