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)

通常のレイズド コサイン フィルターとルート レイズド コサイン フィルターを比較します。理想的な (長さが無限の) レイズド コサイン パルス整形フィルターは、カスケード状の 2 つの理想的なルート レイズド コサイン フィルターと等価です。このため、通常の FIR フィルターのインパルス応答は、スクエア ルート フィルターをそれ自体に畳み込んで得られるインパルス応答と類似したものになります。

ロールオフが 0.25 である通常のレイズド コサイン フィルターを作成します。このフィルターが 4 つのシンボルをカバーし、シンボルあたりのサンプル数が 3 つになるように指定します。

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

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

通常のフィルターには、sps の整数倍にゼロクロッシングがあります。したがって、符号間干渉ゼロに対するナイキスト条件を満しています。しかし、スクエア ルート フィルターはこの条件を満たしていません。

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

スクエア ルート フィルターをそれ自体に畳み込みます。インパルス応答を最大値から外側に向けて打ち切り、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")

畳み込まれた応当は長さが有限であるため、通常のフィルターとは一致しません。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;

受信信号をフィルター処理し、フィルターに一致させてダウンサンプリングします。

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

ルート レイズド コサイン フィルターを使用して信号を内挿および間引きする方法については、RRC フィルターを使った内挿と間引き (Communications Toolbox)を参照してください。

入力引数

すべて折りたたむ

ロールオフ係数。1 を超えない非負の実数スカラーとして指定します。このロールオフ係数によりフィルターの過剰帯域幅が決定されます。ゼロ ロールオフは「急峻な特性」のフィルターに対応し、単位ロールオフは純粋なレイズド コサインに対応します。

データ型: 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™ ソフトウェアのライセンスがある場合は、ストリーミング動作によるマルチレート レイズド コサイン フィルター処理を実行できます。これを行うには、comm.RaisedCosineTransmitFilter および comm.RaisedCosineReceiveFilter の各 System object™ フィルターを使用します。

参照

[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 で導入

参考

トピック