ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

rcosdesign

レイズド コサイン FIR パルス整形フィルターの設計

構文

b = rcosdesign(beta,span,sps)
b = rcosdesign(beta,span,sps,shape)

説明

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
fvtool(h,'Analysis','impulse')

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

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

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

h1 = rcosdesign(rf,span,sps,'normal');
fvtool(h1,'impulse')

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

h2 = rcosdesign(rf,span,sps,'sqrt');
fvtool(h2,'impulse')

スクエア ルート フィルターをそれ自体に畳み込みます。インパルス応答を最大値から外側に向けて打ち切り、h1 と同じ長さとなるようにします。最大値を使用して応答を正規化します。その後、畳み込んだスクエア ルート フィルターを通常のフィルターと比較します。

h3 = conv(h2,h2);
p2 = ceil(length(h3)/2);
m2 = ceil(p2-length(h1)/2);
M2 = floor(p2+length(h1)/2);
ct = h3(m2:M2);

stem([h1/max(abs(h1));ct/max(abs(ct))]','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);

この例では、関数rcosdesignを使って設計されたルート レイズド コサイン フィルターを使用して、信号を内挿および間引きする方法を説明します。この例には Communications Toolbox™ ソフトウェアが必要です。

ルート レイズド コサイン フィルター パラメーターを定義します。コンスタレーション パラメーターを定義します。

rolloff = 0.25; % Filter rolloff
span = 6;       % Filter span
sps = 4;        % Samples per symbol
M = 4;          % Size of the signal constellation
k = log2(M);    % Number of bits per symbol

関数 rcosdesign を使用してルート レイズド コサイン フィルターの係数を生成します。

rrcFilter = rcosdesign(rolloff, span, sps);

関数 randi を使用して 10000 個のデータ シンボルを生成します。

data = randi([0 M-1], 10000, 1);

データ シンボルに PSK 変調を適用します。コンスタレーション サイズは 4 のため、変調タイプは QPSK です。

modData = pskmod(data, M, pi/4);

関数 upfirdn を使用して、入力データをアップサンプリングし、フィルター処理します。

txSig = upfirdn(modData, rrcFilter, sps);

Eb/N0 を SNR に変換し、その後、この信号を AWGN チャネルを介して渡します。

EbNo = 7;
snr = EbNo + 10*log10(k) - 10*log10(sps);
rxSig = awgn(txSig, snr, 'measured');

受信信号をフィルター処理し、ダウンサンプリングします。フィルター遅延を考慮して、信号の一部を削除します。

rxFilt = upfirdn(rxSig, rrcFilter, 1, sps);
rxFilt = rxFilt(span+1:end-span);

最初の 5000 個のシンボルを使用して、変調したデータの散布図を作成します。

hScatter = scatterplot(sqrt(sps)* ...
    rxSig(1:sps*5000),...
    sps,0,'g.');
hold on
scatterplot(rxFilt(1:5000),1,0,'kx',hScatter)
title('Received Signal, Before and After Filtering')
legend('Before Filtering','After Filtering')
axis([-3 3 -3 3]) % Set axis ranges
hold off

入力引数

すべて折りたたむ

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

データ型: double | single

正の整数スカラーとして指定されるシンボルの数。

データ型: double | single

正の整数スカラーとして指定される、シンボルあたりのサンプル数 (オーバーサンプリング係数)。

データ型: double | single

レイズド コサイン ウィンドウの形状。'normal' または 'sqrt' で指定します。

出力引数

すべて折りたたむ

行ベクトルとして返される、レイズド コサイン フィルターの係数。

データ型: double | single

ヒント

  • 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.

拡張機能

R2013b で導入