このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
dsp.DigitalDownConverter
デジタル信号を中間周波数 (IF) 帯域からベースバンドに変換して間引きする
説明
dsp.DigitalDownConverter
オブジェクトは、デジタル信号を中間周波数 (IF) 帯域からベースバンドに変換して間引きします。
入力信号のデジタル ダウンコンバージョンの方法は次のとおりです。
dsp.DigitalDownConverter
オブジェクトを作成し、そのプロパティを設定します。関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の機能の詳細については、System object とはを参照してください。
このオブジェクトは、特定の条件下で C/C++ コード生成と SIMD コード生成をサポートします。詳細については、コード生成を参照してください。
作成
説明
は、デジタル ダウン コンバーター (DDC) System object™ の dwnConv
= dsp.DigitalDownConverterdwnConv
を返します。
は、dwnConv
= dsp.DigitalDownConverter(Name,Value
)Value
の指定値に設定された指定プロパティ Name
を持つ DDC オブジェクト dwnConv
を返します。(Name1
,Value1
,...,NameN
,ValueN
) のように、追加の名前と値のペアの引数を任意の順番で指定できます。
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release
を使用します。
プロパティが "調整可能" の場合、その値をいつでも変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
SampleRate
— 入力信号のサンプル レート
30000000
(既定値) | 正のスカラー
このプロパティは、CenterFrequency
プロパティの値の 2 倍以上の正のスカラー値に設定します。
データ型: single
| double
DecimationFactor
— 間引き係数
100
(既定値) | 正の整数スカラー | 正の整数のベクトル
このプロパティは、正の整数スカラーか 1 行 2 列または 1 行 3 列の正の整数のベクトルに設定します。
このプロパティをスカラーに設定した場合、オブジェクトは 3 つの各フィルター段の間引き係数を自動的に選択します。
このプロパティを 1 行 2 列のベクトルに設定した場合、オブジェクトは第 3 フィルター段をバイパスし、第 1 と第 2 のフィルター段の間引き係数をベクトルの 1 番目と 2 番目の要素の値にそれぞれ設定します。DecimationFactor
ベクトルの要素はどちらも 1 より大きくなければなりません。
このプロパティを 1 行 3 列のベクトルに設定する場合は、ベクトルの i 番目の要素で第 i フィルター段の間引き係数を指定します。DecimationFactor
ベクトルの 1 番目と 2 番目の要素は 1 より大きくなければならず、3 番目の要素は 1 または 2 でなければなりません。
データ型: double
MinimumOrderDesign
— 最小次数フィルター設計
true
(既定値) | false
このパラメーターを true
に設定した場合、オブジェクトは PassbandRipple
、StopbandAttenuation
、Bandwidth
、StopbandFrequencySource
、StopbandFrequency
の各プロパティを使用して設定した通過帯域リップル、阻止帯域の減衰量、通過帯域周波数、阻止帯域周波数の仕様を満たす最小次数でフィルターを設計します。
このプロパティを false
に設定した場合、オブジェクトは NumCICSections
、SecondFilterOrder
、ThirdFilterOrder
の各プロパティで指定した次数でフィルターを設計します。フィルター設計は、Bandwidth
、StopbandFrequencySource
、StopbandFrequency
の各プロパティを使用して設定した通過帯域と阻止帯域の周波数の仕様を満たします。
データ型: logical
NumCICSections
— CIC 間引きのセクションの数
3
(既定値) | 正の整数スカラー
CIC 間引きのセクション数。正の整数のスカラーとして指定します。
依存関係
このプロパティは、MinimumOrderDesign
プロパティを false
に設定した場合に適用されます。
データ型: double
SecondFilterOrder
— CIC 補正フィルター段の次数
12
(既定値) | 正の整数スカラー
CIC 補正フィルター段の次数。正の整数スカラーとして指定します。
依存関係
このプロパティは、MinimumOrderDesign
プロパティを false
に設定した場合に適用されます。
データ型: double
ThirdFilterOrder
— 第 3 フィルター段の次数
10
(既定値) | 偶数の正の整数
第 3 フィルター段の次数。偶数の正の整数スカラーとして指定します。DecimationFactor
プロパティを 1 行 2 列のベクトルに設定した場合、第 3 フィルター段はバイパスされるため、オブジェクトは ThirdFilterOrder
プロパティを無視します。
依存関係
このプロパティは、MinimumOrderDesign
プロパティを false
に設定した場合に適用されます。
データ型: double
Bandwidth
— 入力信号の両側帯域幅 (Hz 単位)
200000
(既定値) | 正の整数スカラー
入力信号の両側帯域幅 (Hz 単位)。正の整数スカラーとして指定します。オブジェクトは、フィルターのカスケードの通過帯域周波数を Bandwidth
プロパティで指定した値の半分に設定します。このプロパティの値は、SampleRate
/DecimationFactor
未満に設定します。
データ型: double
StopbandFrequencySource
— 阻止帯域周波数のソース
Auto
(既定値) | Property
阻止帯域周波数のソースを Auto
または Property
のいずれかとして指定します。このプロパティを Auto
に設定した場合、オブジェクトはカスケード フィルター応答のカットオフ周波数を約 Fc =
Hz に設定します。M は SampleRate
/M/2DecimationFactor
プロパティで指定した合計間引き係数です。オブジェクトは阻止帯域周波数を Fstop = Fc + TW/2
として計算します。TW はカスケード応答の遷移帯域で 2×(Fc–Fp)
として計算されます。Fp は通過帯域周波数で
と等しくなります。 Bandwidth
/2
StopbandFrequency
— 阻止帯域周波数 (Hz 単位)
150000
(既定値) | 正のスカラー
阻止帯域周波数 (Hz 単位)。正のスカラーとして指定します。
依存関係
このプロパティは、StopbandFrequencySource
プロパティを Property
に設定した場合に適用されます。
データ型: double
PassbandRipple
— カスケード応答の通過帯域リップル (dB 単位)
0.1
(既定値) | 正のスカラー
カスケード応答の通過帯域リップル (dB 単位)。正のスカラーとして指定します。MinimumOrderDesign
プロパティを true
に設定した場合、オブジェクトはカスケード応答が PassbandRipple
プロパティで指定した通過帯域リップルを満たすようにフィルターを設計します。
依存関係
このプロパティは、MinimumOrderDesign
プロパティを true
に設定した場合に適用されます。
データ型: double
StopbandAttenuation
— カスケード応答の阻止帯域の減衰量 (dB 単位)
60
(既定値) | 正のスカラー
カスケード応答の阻止帯域の減衰量 (dB 単位)。正のスカラーとして指定します。MinimumOrderDesign
プロパティを true
に設定した場合、オブジェクトはカスケード応答が StopbandAttenuation
プロパティで指定した阻止帯域の減衰量を満たすようにフィルターを設計します。
依存関係
このプロパティは、MinimumOrderDesign
プロパティを true
に設定した場合に適用されます。
データ型: double
Oscillator
— 発振器のタイプ
Sine wave
(既定値) | NCO
| Input port
| None
発振器を Sine wave
、NCO
、Input port
、None
のいずれかとして指定します。このプロパティを Sine wave
に設定した場合、オブジェクトは正弦波三角関数のサンプルから得られた複素指数を使用して入力信号の周波数をダウン コンバートします。このプロパティを NCO
に設定した場合、オブジェクトは数値制御発振器 (NCO) を使用して得られた複素指数で周波数のダウン コンバージョンを実行します。このプロパティを Input port
に設定した場合、このオブジェクトへの入力として渡された複素数の発振器信号 z
を使用して周波数のダウン コンバージョンが実行されます。このプロパティを None
に設定した場合、オブジェクトは混合器段なしで 3 段カスケード間引きとして動作します。
CenterFrequency
— 入力信号の中心周波数 (Hz 単位)
14000000
(既定値) | 正のスカラー
入力信号の中心周波数 (Hz 単位)。SampleRate
プロパティの値の半分以下の正のスカラーとして指定します。オブジェクトは入力信号を CenterFrequency
プロパティで指定した通過帯域中心周波数から 0
Hz にダウン コンバートします。
依存関係
このプロパティは、Oscillator
プロパティを Sine wave
または NCO
に設定した場合に適用されます。
データ型: double
NumAccumulatorBits
— NCO のアキュムレータのビット数
16
(既定値) | 正の整数
NCO のアキュムレータのビット数。範囲 [1 128]
の正の整数として指定します。
依存関係
このプロパティは、Oscillator
プロパティを NCO
に設定した場合に適用されます。
データ型: double
NumQuantizedAccumulatorBits
— NCO の量子化アキュムレータのビット数
12
(既定値) | 正の整数
NCO の量子化アキュムレータのビット数。範囲 [1 128]
の整数スカラーとして指定します。このプロパティで指定する値は、NumAccumulatorBits
プロパティで指定した値よりも小さくなくてはなりません。
依存関係
このプロパティは、Oscillator
プロパティを NCO
に設定した場合に適用されます。
データ型: double
Dither
— NCO のディザー制御
true
(既定値) | false
このプロパティを true
に設定した場合、NumDitherBits
プロパティで指定したディザーのビット数を使用して NCO 信号にディザーが適用されます。
依存関係
このプロパティは、Oscillator
プロパティを NCO
に設定した場合に適用されます。
NumDitherBits
— NCO のディザーのビット数
4
(既定値) | 正の整数
このプロパティは、NumAccumulatorBits
プロパティで指定したアキュムレータのビット数よりも小さい整数スカラーとして指定します。
依存関係
このプロパティは、Oscillator
プロパティを NCO
に設定し、Dither プロパティを true
に設定した場合に適用されます。
データ型: double
固定小数点プロパティ
FiltersInputDataType
— 各フィルター段の入力のデータ型
Same as input
(既定値) | Custom
第 1、第 2、第 3 (バイパスされていない場合) の各フィルター段の入力のデータ型を Same as input
または Custom
のいずれかとして指定します。オブジェクトは、このプロパティで設定した値に従って各フィルター段の入力でデータをキャストします。
CustomFiltersInputDataType
— 各フィルター段の入力の固定小数点データ型
numerictype([],16,15)
(既定値) | 数値型
フィルターの入力の固定小数点データ型を Auto
の符号属性のスケーリングされた numerictype
(Fixed-Point Designer) オブジェクトとして指定します。
依存関係
このプロパティは、FiltersInputDataType
プロパティを Custom
に設定した場合に適用されます。
OutputDataType
— 出力のデータ型
Same as input
(既定値) | Custom
出力のデータ型を Same as input
または Custom
として指定します。
CustomOutputDataType
— 出力の固定小数点データ型
numerictype([],16,15)
(既定値) | 数値型
出力の固定小数点型を、Signedness が Auto
に設定された、スケーリングされた numerictype
(Fixed-Point Designer) オブジェクトとして指定します。
依存関係
このプロパティは、OutputDataType
プロパティを Custom
に設定した場合に適用されます。
使用法
説明
入力引数
x
— データ入力
列ベクトル | 行列
データ入力。列ベクトルまたは行列として指定します。入力 x
の長さは間引き係数の倍数でなければなりません。x
のデータ型が double
または single
精度である場合、y
のデータ型は x
のデータ型と同じになります。x
のデータ型が固定小数点型の場合、y
のデータ型は OutputDataType
プロパティによって定義されます。
データ型が double
または single
の場合にのみ、入力は複数のチャネルを持つことができます。入力のデータ型は、double
、single
、符号付き整数、または符号付き固定小数点 (fi
オブジェクト) にできます。
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
z
— 発振器信号
列ベクトル | 行列
入力信号を周波数ダウン コンバートするために使用される発振器信号。列ベクトルまたは行列として指定します。この入力は複素数でなければなりません。z
の長さは x
の長さと等しくなければなりません。z
は、double
、single
、符号付き整数、または符号付き固定小数点 (fi
オブジェクト) にできます。
依存関係
この入力は、Oscillator
プロパティを Input port
に設定した場合に適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
出力引数
y
— ダウン コンバートおよびダウン サンプリングされた信号
列ベクトル | 行列
ダウン コンバートおよびダウン サンプリングされた信号。列ベクトルまたは行列として返されます。y
の長さは、x
の長さを DecimationFactor
で除算したものと等しくなります。x
のデータ型が double
または single
精度である場合、y
のデータ型は x
のデータ型と同じになります。x
のデータ型が固定小数点型の場合、y
のデータ型は OutputDataType
プロパティによって定義されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
dsp.DigitalDownConverter
に固有
getDecimationFactors | デジタル ダウン コンバーターの各フィルター段の間引き係数の取得 |
getFilterOrders | Get orders of digital down converter or digital up converter filter cascade |
getFilters | Get handles to digital down converter or digital up converter filter cascade objects |
fvtool | デジタル ダウン コンバーターまたはデジタル アップ コンバーター フィルター カスケードの周波数応答の可視化 |
groupDelay | Group delay of digital down converter or digital up converter filter cascade |
visualizeFilterStages | Display response of digital down converter or digital up converter filter cascade |
generatehdl | Generate HDL code for quantized DSP filter (requires Filter Design HDL Coder) |
例
正弦波信号のアップコンバートとダウンコンバート
1 KHz の正弦波信号を係数 20 でアップ サンプリングして 50 KHz までアップ コンバートするデジタル アップ コンバーター オブジェクトを作成します。その信号を 0 Hz までダウン コンバートして係数 20 でダウン サンプリングするデジタル ダウン コンバーター オブジェクトを作成します。
1 KHz の正弦波信号をサンプル レート 6 Hz で取得する正弦波ジェネレーターを作成します。
Fs = 6e3; % Sample rate sine = dsp.SineWave('Frequency',1000,'SampleRate',... Fs,'SamplesPerFrame',1024); x = sine(); % generate signal
DigitalUpConverter
オブジェクトを作成します。最小次数フィルター設計を使用し、通過帯域リップルを 0.2 dB、阻止帯域の減衰量を 55 dB に設定します。信号の両側波帯域は 2 KHz に設定します。
upConv = dsp.DigitalUpConverter(... 'InterpolationFactor', 20,... 'SampleRate', Fs,... 'Bandwidth', 2e3,... 'StopbandAttenuation', 55,... 'PassbandRipple',0.2,... 'CenterFrequency',50e3);
DigitalDownConverter
オブジェクトを作成します。最小次数フィルター設計を使用し、通過帯域リップルを 0.2 dB、阻止帯域の減衰量を 55 dB に設定します。
dwnConv = dsp.DigitalDownConverter(... 'DecimationFactor',20,... 'SampleRate', Fs*20,... 'Bandwidth', 3e3,... 'StopbandAttenuation', 55,... 'PassbandRipple',0.2,... 'CenterFrequency',50e3);
アップ コンバート前、アップ コンバート後、ダウン コンバート後の信号スペクトルを可視化するスペクトル推定器を作成します。
window = hamming(floor(length(x)/10)); figure; pwelch(x,window,[],[],Fs,'centered') title('Spectrum of baseband signal x')
信号をアップ コンバートしてスペクトルを可視化します。
xUp = upConv(x); % up convert window = hamming(floor(length(xUp)/10)); figure; pwelch(xUp,window,[],[],20*Fs,'centered'); title('Spectrum of up converted signal xUp')
信号をダウン コンバートしてスペクトルを可視化します。
xDown = dwnConv(xUp); % down convert window = hamming(floor(length(xDown)/10)); figure; pwelch(xDown,window,[],[],Fs,'centered') title('Spectrum of down converted signal xDown')
間引きフィルターの応答を可視化します。
visualizeFilterStages(dwnConv)
間引き係数の取得
dsp.DigitalDownConverter
System object™ の各フィルター段の間引き係数を取得します。
既定の設定を使用して dsp.DigitalDownConverter
System object を作成します。関数 getDecimationFactors
を使用して、オブジェクトの各段の間引き係数を取得します。
dwnConv = dsp.DigitalDownConverter
dwnConv = dsp.DigitalDownConverter with properties: DecimationFactor: 100 MinimumOrderDesign: true Bandwidth: 200000 StopbandFrequencySource: 'Auto' PassbandRipple: 0.1000 StopbandAttenuation: 60 Oscillator: 'Sine wave' CenterFrequency: 14000000 SampleRate: 30000000 Use get to show all properties
M = getDecimationFactors(dwnConv) %#ok
M = 1×3
25 2 2
オブジェクトの DecimationFactor
プロパティは 100 に設定されています。出力 M
は既定では 1 行 3 列のベクトルです。ここで、ベクトル内の各要素は間引き係数全体の係数です。
DecimationFactor
を 1 行 2 列のベクトルに設定した場合、オブジェクトは第 3 フィルター段をバイパスし、第 1 と第 2 のフィルター段の間引き係数をベクトルの 1 番目と 2 番目の要素の値にそれぞれ設定します。
dwnConv.DecimationFactor = [10 10]
dwnConv = dsp.DigitalDownConverter with properties: DecimationFactor: [10 10] MinimumOrderDesign: true Bandwidth: 200000 StopbandFrequencySource: 'Auto' PassbandRipple: 0.1000 StopbandAttenuation: 60 Oscillator: 'Sine wave' CenterFrequency: 14000000 SampleRate: 30000000 Use get to show all properties
M = getDecimationFactors(dwnConv)
M = 1×2
10 10
関数 getDecimationFactors
の出力は、1 行 2 列のベクトルになっています。
詳細
固定小数点
次のブロック線図は、符号付き固定小数点入力の DDC 演算を表しています。
WL
は入力の語長で、FL
は入力の小数部の長さです。各フィルターの入力は、フィルター入力データ型にキャストされます。
dsp.DigitalDownConverter
オブジェクトでは、FiltersInputDataType
プロパティとCustomFiltersInputDataType
プロパティを使用してフィルター入力データ型を指定できます。Digital Down-Converter ブロックでは、[Stage input] パラメーターを使用してフィルター入力データ型を指定できます。発振器の出力は、入力の語長に 1 を加えた語長にキャストされます。小数部の長さは入力の語長から 1 を引いた値と等しくなります。
CIC 間引きの出力におけるスケーリングは、大まかなゲイン調整と細かなゲイン調整から成ります。CIC 間引きの出力では、関数
reinterpretcast
(Fixed-Point Designer) を使用して大まかなゲインが達成されます。細かなゲインは完全精度の乗算を使用して達成されます。
次の図は、大まかなゲイン演算と細かなゲイン演算を示しています。
正規化ゲインを G (0<G≦1) とすると次のようになります。
WLcic
は CIC 間引きの出力の語長で、FLcic
は CIC 間引きの出力の小数部の長さ。F1 = abs(nextpow2(G))
となり、ビット シフトを使用して達成された G の部分を示す (大まかなゲイン)。F2
= フィルター入力データ型で指定された小数部の長さ。fg = fi((2^F1)*G, true, 16)
となり、残りのゲインはビット シフトで達成できないことを示す (細かなゲイン)。
アルゴリズム
デジタル ダウン コンバーターは、指定された中心周波数をもつ複素指数で入力信号を乗算することにより、入力信号をダウンコンバートします。アルゴリズムは、3 つの間引きフィルターのカスケードを使用して、周波数ダウンコンバートされた信号をダウンサンプリングします。この場合、フィルター カスケードは CIC 間引き、CIC 補正、第 3 の FIR 間引き段で構成されます。次のブロック線図は、デジタル ダウン コンバーターのアーキテクチャを示しています。
スケーリング セクションは CIC のゲインと発振器の出力を正規化します。目的とするリップルの仕様を実現するための補正係数が含まれる場合もあります。入力端子で発振器信号を指定する場合、正規化係数には発振器の力率は含まれません。間引き係数の設定に応じて、ブロックは第 3 フィルター段をバイパスします。入力データ型が倍精度または単精度である場合、アルゴリズムは応答が N 個のボックスカー フィルターのカスケードに対応する N セクションの CIC 間引きフィルターを FIR フィルターとして実装します。アルゴリズムは、浮動小数点データでシミュレーションを実行できるように、CIC フィルターを FIR フィルターでエミュレートします。入力データ型が固定小数点の場合、アルゴリズムは実際の櫛形セクションと積分器セクションで構成される真の CIC フィルターを実装します。
次のブロック線図は、単精度または倍精度の浮動小数点入力の DDC 演算を表しています。
固定小数点演算の詳細については、固定小数点を参照してください。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
MATLAB コード生成における System object (MATLAB Coder)を参照してください。
このオブジェクトは、入力信号のデータ型が single
または double
である場合、Intel® AVX2 コード置換ライブラリを使用した SIMD コード生成もサポートします。
SIMD テクノロジーにより、生成コードのパフォーマンスが大幅に向上します。詳細については、SIMD コード生成を参照してください。このオブジェクトから SIMD コードを生成するには、Use Intel AVX2 Code Replacement Library to Generate SIMD Code from MATLAB Algorithmsを参照してください。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
このオブジェクトは、Filter Design HDL Coder™ 製品による HDL コード生成をサポートします。ワークフローと制限については、Generate HDL Code for Filter System Objects (Filter Design HDL Coder)を参照してください。
バージョン履歴
R2012a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)