主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

C转换

nを法する畳み込み畳み込み

说明

C= cconv(一个,,,,bは,ベクトル一个bの畳み込みをます。

C= cconv(一个,,,,b,,,,nでは,ベクトル一个およびbが巡回に畳み込まます。ここでnは,返されるの长さ。,,,C转换2つのてつのつのの相互相关をできでき。。

すべて折りたたむ

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

a = [1 2 -1 1];b = [1 1 2 1 2 2 1 1];c = cconv(a,b);% Circular convolutioncref = conv(a,b);% Linear convolutiondif = norm(c-cref)
DIF = 9.7422E-16

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

2つの生成,,,を法循环を计算し。。

a = [2 1 2 1];b = [1 2 3 4];C = CCONV(A,B,4)
C=1×414 16 14 16

2 つの複素数シーケンスを生成します。C转换をしそれらの循环相关を比较しますます。の定义定义にに适合适合适合适合适合するするするするするするようににににににににに番目番目2

a = [1 2 2 1]+1i;b = [1 3 4 1] -2*1i;c = cconv(a,conj(fliplr(b)),7);

この结果を,xcorrを使用计算し相互相关とし。。。

cref = xcorr(a,b);dif = norm(c-cref)
DIF = 3.3565E-15

5サンプルの応答応答 H (( z = 1 - z - 1 1 firフィルターフィルターののつの信号を生成。。。

x1 =转换(([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 1

2をと循环は,畳み込み畳み込み畳み込みつのをもつ配列に分割してからから配列を加算加算するする。

ccn2 = cconv(x1,x2,2)
ccn2 =1×2-1 1
nl = numel(lcnv);mod2 = sum(reshape(lcnv,2,nl/2)')
mod2 =1×2-1 1

3をする畳み込みをしエイリアシングし线形畳み込みと比较し。

ccn3 =C转换((X1,,,,X2,3)
ccn3 =1×30 0 0
mod3 = sum(reshape(lcnv,3,nl/3)')
mod3 =1×30 0 0

出力长长小さく,长出力でない场合场合は,加算するする前にに畳み込みをゼロゼロでで

C = 5;z =零(c*ceil(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(reshape(z,c,numel(z)/c)')
modc =1×50 -1 -1 1 1

出力长长等しいか,それ大きい场合は畳み込み畳み込みをパディングし,,加算加算んんん

d = 13;z =零(d*ceil(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 -0.0000
modd = z'
modd =1×13-1 -1 -1 1 1 1 0 0 0 0 0 0 0 0 0 0

平行计算工具箱™ソフトウェアソフトウェアが必要ですです。。どのどのどのどのどのどのどのががサポートリリース別の GPU サポート(并行计算工具箱)を参照しください。

1 khzのののののから构成されるれるれるれるれるつつの信号を作成作成ししますますます。。。。レートレートレートレートレートレートレートレートはははははははははははははは

FS = 1E4;t = 0:1/fs:10-(1/fs);x = cos(2*pi*1e3*t)+randn(size(t));y = sin(2*pi*1e3*t)+randn(size(t));

gpuarrayを使用してXyをgpuにします。。。ををし循环畳み込みを取得ます。

x = gpuArray (x);y = gpuArray (y);中国保监会= cconv (x, y,,,,length(x)+length(y)-1);

结果x x yと线形畳み込みと比较し。。。

linc = conv(x,y);规范(linc-cir,2)
ANS = 1.4047E-08

收集を使用て,循环畳み込み循环をmatlab®ワークワークに返し。。。

circ =聚集(circ);

入力引数

すべて折りたたむ

入力配列。またはgpuarrayオブジェクトとして指定ます。gpuarrayオブジェクトの详细は,gpuでmatlab关数关数実行実行(并行计算工具箱)を参照しください。C转换gpuarray平行计算工具箱™ソフトウェアソフトウェアソフトウェアが必要必要です。。どのどのどのどのリリース別の GPU サポート(并行计算工具箱)を参照しください。

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

例:gpuarray((罪(2*pi*(0:9)/10) + randn([1 10])/10)は,gpuarrayオブジェクトとしてをだ正弦波指定します。

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

畳み込みのさ正のとして指定します。nを指定しない場合、畳み込みの長さは长度(a)+长度(b)-1です。

出力引数

すべて折りたたむ

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

ヒント

长いシーケンス,畳み込みの方线形畳み込みもなる场合ががます。

参照

[1] Orfanidis,Sophocles J.信号处理简介。新泽西州Englewood Cliffs:Prentice-Hall,1996年,第524-529页。

拡张机能

C/C ++コード生成
MATLAB®编码器™を使用てC ++コードを生成し。。。

参考

|

R2007Aで导入