主要内容

cconv

模n圆卷积

描述

例子

c= cconv (一个b可变向量一个而且b

例子

c= cconv (一个bn对向量进行循环卷积一个而且bn结果向量的长度。你也可以使用cconv计算两个序列的循环互相关。

例子

全部折叠

生成两个不同长度的信号。比较它们的圆卷积和线性卷积。使用默认值n

A = [1 2 -1 1];B = [1 1 2 1 2 2 1 1];C = cconv(a,b);%循环卷积Cref = conv(a,b);%线性卷积Dif = norm(c-cref)
Dif = 9.7422e-16

得到的范数几乎为零,这表明两个卷积产生的结果与机器精度相同。

生成两个向量并计算它们的模-4圆卷积。

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

生成两个复杂序列。使用cconv计算它们的循环互相关。翻转并共轭第二个操作数以符合互相关的定义。指定输出向量长度为7。

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.3565 -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×21

用默认输出长度计算它们的循环卷积。结果等价于两个信号的线性卷积。

CCNV = cconv(x1,x2)
ccnv =1×6-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×21
Nl =数字(lcnv);Mod2 = sum(重塑(lcnv,2,nl/2)')
mod2 =1×21

计算模-3圆卷积,并将其与锯齿线性卷积进行比较。

Ccn3 = cconv(x1,x2,3)
ccn3 =1×30 0 0
Mod3 = sum(重塑(lcnv,3,nl/3)')
mod3 =1×30 0 0

如果输出长度小于卷积长度,并且没有精确除它,则在添加之前用零填充卷积。

C = 5;Z = 0 (c*ceil(nl/c),1);Z (1:nl) = lcnv;CCNC = cconv(x1,x2,c)
国家气候变化委员会=1×50.0000 -1.0000 -1.0000 1.0000
Modc = sum(重塑(z,c,numel(z)/c)')
modc =1×50 -1 -1 1 1

如果输出长度等于或大于卷积长度,填充卷积,不添加。

D = 13;Z = 0 (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
Modd = z'
modd =1×13-1 -1 -1 1 1 1 0 0 0 0 0 0 0

下面的示例需要并行计算工具箱™软件。指GPU计算要求(并行计算工具箱)看看支持哪些图形处理器。

在加性高斯白噪声中创建两个由1khz正弦波组成的信号。采样率为10khz

Fs = 1e4;t = 0:1/Fs:10-(1/Fs);X = cos(2*pi*1e3*t)+randn(size(t));Y = sin(2* π *1e3*t)+randn(size(t));

x而且y在GPU上使用gpuArray.通过GPU获取圆形卷积。

x = gpuArray(x);y = gpuArray(y);cirC = cconv(x,y,长度(x)+长度(y)-1);

将结果与x和y的线性卷积进行比较。

linC = conv(x,y);规范(linC-cirC, 2)
Ans = 1.4047e-08

返回圆形卷积,中国保监会,到MATLAB®工作空间使用收集

cirC =收集(cirC);

输入参数

全部折叠

输入数组,指定为向量或gpuArray对象。看到在图形处理器上运行MATLAB函数(并行计算工具箱)有关详情gpuArray对象。使用cconvgpuArray对象需要并行计算工具箱™软件。指GPU计算要求(并行计算工具箱)看看支持哪些图形处理器。

例子:Sin (2*pi*(0:9)/10) + randn([1 10])/10指定一个噪声正弦作为行向量。

例子:gpuArray(sin(2*pi*(0:9)/10) + randn([1 10])/10)指定一个有噪声的正弦信号为gpuArray对象。

数据类型:|
复数支持:是的

卷积长度,指定为正整数。如果您没有指定n,那么卷积就有长度了长度(a) + 1 (b)

输出参数

全部折叠

输入向量的循环卷积,作为向量或返回gpuArray

提示

对于长序列,循环卷积比线性卷积快。

参考文献

[1]奥法尼迪斯,索福克勒斯J。信号处理导论.恩格尔伍德悬崖,新泽西州:Prentice-Hall, 1996,第524-529页。

扩展功能

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

版本历史

在R2007a中引入

另请参阅

|

Baidu
map