cconv
模n圆卷积
描述
例子
循环卷积和线性卷积
生成两个不同长度的信号。比较它们的圆卷积和线性卷积。使用默认值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
得到的范数几乎为零,这表明两个卷积产生的结果与机器精度相同。
循环卷积
循环互相关
生成两个复杂序列。使用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滤波器与响应 .
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进行循环卷积
下面的示例需要并行计算工具箱™软件。指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);
输入参数
一个
,b
- - - - - -输入数组
向量|gpuArray
对象
输入数组,指定为向量或gpuArray
对象。看到在图形处理器上运行MATLAB函数(并行计算工具箱)有关详情gpuArray
对象。使用cconv
与gpuArray
对象需要并行计算工具箱™软件。指GPU计算要求(并行计算工具箱)看看支持哪些图形处理器。
例子:Sin (2*pi*(0:9)/10) + randn([1 10])/10
指定一个噪声正弦作为行向量。
例子:gpuArray(sin(2*pi*(0:9)/10) + randn([1 10])/10)
指定一个有噪声的正弦信号为
对象。gpuArray
数据类型:单
|双
复数支持:是的
n
- - - - - -卷积的长度
正整数
卷积长度,指定为正整数。如果您没有指定n
,那么卷积就有长度了长度(a) + 1 (b)
.
输出参数
c
-循环卷积
向量|gpuArray
对象
输入向量的循环卷积,作为向量或返回gpuArray
.
提示
对于长序列,循环卷积比线性卷积快。
参考文献
[1]奥法尼迪斯,索福克勒斯J。信号处理导论.恩格尔伍德悬崖,新泽西州:Prentice-Hall, 1996,第524-529页。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2007a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。