主要内容

CConv.

模型-N循环卷积

描述

C= cconv(一种B.追加向量一种B.

C= cconv(一种B.N循环旋转向量一种B.N是得到的矢量的长度。你也可以使用CConv.计算两个序列的圆形交叉相关。

例子

全部收缩

生成两个不同长度的信号。比较他们的循环卷积及其线性卷积。使用默认值N

a = [1 2 -1 1];B = [1 1 2 1 2 2 11];c = cconv(a,b);%循环卷积Cref = Conv(A,B);%线性卷积DIF = NOM(C-CREF)
DIF = 9.7422E-16

由此产生的规范几乎为零,这表明两种卷轴产生相同的机器精度结果。

生成两个向量并计算其模态-4循环卷积。

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

生成两个复杂的序列。采用CConv.计算它们的循环交叉相关。翻转和缀合第二操作数以符合交叉相关的定义。指定输出矢量长度为7。

a = [1 2 2 1] + 1i;B = [1 3 4 1] -2 * 1i;C = CCONV(A,Cong(Pliplr(B)),7);

将结果与使用的互相关的结果进行比较XCorr.

Cref = Xcorr(A,B);DIF = NOM(C-CREF)
差异= 3.3565e-15

生成两个信号:五个样本三角形波形和具有响应的一阶FIR滤波器 H Z. = 1 - Z. - 1

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

使用默认输出长度计算其循环卷积。结果相当于两个信号的线性卷积。

ccnv = cconv(x1,x2)
ccnv =1×6.-1.0000 -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循环卷积相当于将线性卷积分成两个元件阵列并求解阵列。

CCN2 = CCONV(X1,X2,2)
ccn2 =1×2-1 1
nl = numel(lcnv);mod2 = sum(重塑(lcnv,2,nl / 2)'))
mod2 =1×2-1 1

计算模数-3循环卷积,并将其与混叠线性卷积进行比较。

ccn3 = cconv(x1,x2,3)
CCN3 =1×3.0 0 0.
mod3 = sum(重塑(lcnv,3,nl / 3)')
mod3 =1×3.0 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(重塑(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 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通金宝app过发布支持(并行计算工具箱)看看支持的GPU。金宝app

创建由Addive White Gaussian噪声中的1 kHz正弦波组成的两个信号。采样率为10 kHz

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));

Xy在GPU上使用GPUArray.。使用GPU获得循环卷积。

x = gpuarray(x);Y = GPUARRAY(Y);循环= CCONV(x,y,长度(x)+长度(y)-1);

将结果与X和Y的线性卷积进行比较。

linc = conv(x,y);常态(LINC-CIRC,2)
ans = 1.4047e-08

返回循环卷积,circ,Matlab®工作区使用收集

循环=聚集(CIRC);

输入参数

全部收缩

输入数组,指定为向量或GPUArray.对象。看到在GPU上运行matlab函数(并行计算工具箱)有关详情GPUArray.对象。使用CConv.GPUArray.对象需要并行计算工具箱™软件。参考GPU通金宝app过发布支持(并行计算工具箱)看看支持的GPU。金宝app

例:SIN(2 * PI *(0:9)/ 10)+ RANDN([1 10])/ 10指定作为行向量的嘈杂正弦曲线。

例:GPUARRAY(SIN(2 * PI *(0:9)/ 10)+ RANDN([1 10])/ 10)指定嘈杂的正弦管作为一个GPUArray.目的。

数据类型:|
复数支持:金宝app

卷积长度,指定为正整数。如果您未指定N,那么卷积有长度长度(a)+长度(b)-1

输出参数

全部收缩

输入向量的循环卷积,作为载体返回GPUArray.

提示

对于长序列,圆形卷积可以比线性卷积更快。

参考资料

[1] Orfanidis,Sophocles J.信号处理简介。Englewood Cliffs,NJ:Prentice-Hall,1996,PP。524-529。

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

也可以看看

|

在R2007A介绍