主要内容

このページの翻訳は最新ではありません。ここをクリックして,英语の最新版を参照してください。

CConv.

ñを法とする循环畳み込み

说明

C=参见cconv(一种B.は,ベクトル一种B.の畳み込みを行います。

C=参见cconv(一种B.Nでは,ベクトル一种およびB.が巡回的に畳み込まれます。ここでNは,结果として返されるベクトルの长さですま。た,CConv.を使用して2つのシーケンスの循环相互相关を计算できます。

すべて折りたたむ

异なる长さの2つの信号を生成します。それらの循环畳み込みと线形畳み込みを比较します。Nの既定の値を使用します。

A = [1 2 -1 1];B = [1 1 2 1 2 2 1 1];C =参见cconv(A,B);%循环卷积CREF = CONV(A,B);%线性卷积DIF =范数(C-CREF)
DIF = 9.7422e-16

结果のノルムは実质的にゼロで,これら2つの畳み込みがマシンの精度に与える结果はほぼ同じであると言えます。

2つのベクトルを生成し,4を法とする循环畳み込みを计算します。

A = [2 1 2 1];B = [1 2 3 4];C =参见cconv(A,B,4)
C =1×414 16 14 16

2つの复素数量シーケンス生成します。CConv.を使用して,それらの循环相互相关を比较します。相互相关の定义に适合するように2番目のオペランドを反転して共役させます。出力ベクトル长に7を指定します。

A = [1 2 2 1] + 1I;B = [1 3 4 1] -2 * 1I;C =参见cconv(一,连词(fliplr(b)中),7);

この结果を,xcorrを使用して计算した相互相关と比较します。

CREF = xcorr(A,B);DIF =范数(C-CREF)
DIF = 3.3565e-15

5サンプルの三角波と応答 H Z. = 1 - Z. - 1 を持つ1次FIRフィルターの2つの信号を生成します。

x1 = conv([1 1 1],[1 1 1])
X1 =1×51 2 3 2 1
X2 = [-1 1]
X2 =1×2-1 1

结果は,2つの信号ます畳み込みはになり。

CCNV =参见cconv(X1,X2)
CCNV =1×6-1.0000 -1.0000 -1.0000 1.0000 1.0000 1.0000
LCNV = CONV(X1,X2)
LCNV =1×6-1 -1 -1 1 1 1

2を法とする循环畳み込みは,线形畳み込みを2つの要素をもつ配列に分割してから配列を加算することと同等です。

CCN2 =参见cconv(X1,x2,2)
CCN2 =1×2-1 1
NL = numel(LCNV);模2 =总和(重塑(LCNV,2,NL / 2)')
mod2 =1×2-1 1

3を法とする循环畳み込みを计算し,エイリアシングした线形畳み込みと比较します。

ccn3 = cconv(x1,x2,3)
CCN3 =1×30 0 0
MOD3 =总和(重塑(LCNV,3,NL / 3)')
量mod3 =1×30 0 0

出力长が畳み込み长より小さく,畳み込み长が出力长で割り切れない场合は,加算する前に畳み込みをゼロでパディングします。

C = 5;Z =零(C *小区(NL / c)中,1);Z(1:NL)= LCNV;CCNC =参见cconv(X1,X2,c)中
CCNC =1×50.0000 -1.0000 -1.0000 1.0000 1.0000
modc = sum(重塑(z,c,numel(z)/ c)')
的MoDC =1×50 -1 -1 1 1

出力长が畳み込み长と等しいか,またはそれより大きい场合は,畳み込みをパディングし,加算は行いません。

d = 13;Z =零(d *小区(NL / d),1);Z(1:NL)= LCNV;ccnd =参见cconv(X1,X2,d)
ccnd =1×13-1.0000 -1.0000 -1.0000 1.0000 1.0000 1.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
MODD = Z”
MODD =1×13-1 -1 -1 1 1 1 0 0 0 0 0 0 0

次の例では,并行计算工具箱™ソフトウェアが必要です。どのGPUがサポートされているかについては,GPU支金宝app持方式发布(并行计算工具箱)を参照してください。

加法性ホワイトガウスノイズの1千赫の正弦波から构成される2つの信号を作成します。サンプルレートは10千赫です。

FS = 1E4;t = 0时:1 / FS:10-(1 / FS);X = COS(2 * PI * 1E3 * T)+ randn(大小(T));Y = SIN(2 * PI * 1E3 * T)+ randn(大小(T));

gpuArrayを使用してXyをGPUに入力します.GPUを使用して循环畳み込みを取得します。

X = gpuArray(X);Y = gpuArray(Y);CIRC =参见cconv(X,Y,长度(X)+长度(Y)-1);

结果をXとýの线形畳み込みと比较します。

LINC = CONV(X,Y);范数(LINC-CIRC,2)
ANS = 1.4047e-08

收集を使用して,循环畳み込み保监会をMATLAB®ワークスペースに返します。

CIRC =聚集(CIRC);

入力引数

すべて折りたたむ

入力配列。ベクトルまたはgpuArrayオブジェクトとして指定します。gpuArrayオブジェクトの详细については,GPUでのMATLAB关数の実行(并行计算工具箱)を参照してください。CConv.gpuArrayオブジェクトと使用するには,并行计算工具箱™ソフトウェアが必要です。どのGPUがサポートされているかについては,GPU支金宝app持方式发布(并行计算工具箱)を参照してください。

例:SIN(2 * PI *(0:9)/ 10)+ randn([1 10])/ 10では,行ベクトルとしてノイズを含んだ正弦波を指定します。

例:GPUARRAY(SIN(2 * PI *(0:9)/ 10)+ RANDN([1 10])/ 10)は,gpuArrayオブジェクトとしてノイズを含んだ正弦波を指定します。

データ型:单身的|双倍的
复素数のサポート:あり

畳み込みの长さ。正の整数として指定します。Nを指定しないない合,畳み込みの长さは长度(a)+长度(B)-1です。

出力引数

すべて折りたたむ

入力ベクトルの循环畳み込み。ベクトルまたはgpuArrayとして返されます。

ヒント

长いシーケンスでは,循环畳み込みの方が线形畳み込みよりも速くなる场合があります。

参照

[1] ORFANIDIS,索福克勒斯J.介绍信号处理。新泽西州Englewood Cliffs:普伦蒂斯霍尔,1996年,页524-529。

拡张机能

C / C ++コード生成
MATLAB®编码器™を使用してÇおよびC ++コードを生成します。

参考

|

R2007aで导入