主要内容

cconv

模n循环卷积

描述

例子

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

例子

c= cconv (一个bn圆可变向量一个bn是结果向量的长度。你也可以用cconv计算两个序列的循环互相关。

例子

全部折叠

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

A = [1 2 -1 1];B = [1 1 2 1 2 1 1];c = cconv (a, b);%循环卷积cref = conv (a, b);%的线性卷积dif =规范(c-cref)
dif = 9.7422 e-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(连词(fliplr (b)), 7);

将结果与互相关计算的结果进行比较xcorr

cref = xcorr (a, b);dif =规范(c-cref)
dif = 3.3565 e15汽油

生成两个信号:一个五采样三角波形和一个带响应的一阶FIR滤波器 H z 1 - z - 1

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

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

ccnv = cconv (x1, x2)
ccnv =1×6-1.0000 -1.0000 -1.0000 1.0000 1.0000
lcnv = conv (x1, x2)
lcnv =1×61 -1 -1 1 1 1 1

模-2循环卷积等价于将线性卷积分解为二元数组并对数组求和。

ccn2 = cconv (x1, x2, 2)
ccn2 =1×21
问=元素个数(lcnv);mod2 =总和(重塑(lcnv 2问/ 2)”)
mod2 =1×21

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

ccn3 = cconv (x1, x2, 3)
ccn3 =1×30 0 0
mod3 =总和(重塑(lcnv 3问/ 3)”)
mod3 =1×30 0 0

如果输出长度小于卷积长度且未进行精确除,则在相加前先将卷积填充为零。

c = 5;z = 0 (c * (nl / c),即:1);z(1:问)= lcnv;国家气候变化委员会= cconv (x1, x2, c)
国家气候变化委员会=1×50.0000 -1.0000 -1.0000 1.0000 1.0000
modc =总和(重塑(z c元素个数(z) / c)”)
modc =1×50 -1 -1 1 1

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

d = 13;z = 0 (d * (nl / d),即:1);z(1:问)= 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×131 -1 -1 1 1 1 1 1 1 1 0 0 0 0 0 0

下面的示例需要使用并行计算工具箱™软件。指GPU支万博1manbetx持情况(并行计算工具箱)查看支持哪些gpu。万博1manbetx

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

Fs = 1 e4;t = 0:1 / Fs: 10 - (1 / Fs);x = cos (2 * pi * 1 e3 * t) + randn(大小(t));y =罪(2 * pi * 1 e3 * t) + randn(大小(t));

xy在GPU上使用gpuArray.通过GPU获取循环卷积。

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

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

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

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

中国保监会=收集(保监会);

输入参数

全部折叠

输入数组,指定为向量或gpuArray对象。看到在GPU上运行MATLAB函数(并行计算工具箱)有关gpuArray对象。使用cconvgpuArray对象需要Parallel Computing Toolbox™软件。指GPU支万博1manbetx持情况(并行计算工具箱)查看支持哪些gpu。万博1manbetx

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

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

数据类型:|
复数的支持:万博1manbetx是的

卷积长度,指定为正整数。如果没有指定n,则卷积有长度长度(a) + 1 (b)

输出参数

全部折叠

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

提示

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

参考文献

索福克勒斯·奥法尼迪斯信号处理概论.Englewood Cliffs, NJ: Prentice-Hall, 1996,第524-529页。

扩展功能

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

另请参阅

|

介绍了R2007a