文档

convmtx

卷积矩阵

描述

例子

一种= convmtx(H,,,,n返回卷积矩阵,一种,使得一种n- 元素向量,X,是卷积HX

例子

全部收缩

计算卷积使用转换当信号是向量时,通常比使用更有效convmtx。对于多通道信号,convmtx可能会更有效。

计算两个随机向量的卷积,一种b,使用两者转换convmtx。这些信号每个都有1000个样本。比较两个函数所花费的时间。通过重复计算30次并平均来消除随机波动。

NT = 30;Na = 1000;NB = 1000;tcnv = 0;tmtx = 0;为了kj = 1:nt a = randn(na,1);b = randn(nb,1);tic n = conv(a,b);tcnv = tcnv+toc;tic c = convmtx(b,na);d = c*a;tmtx = tmtx+toc;结尾t1col = [tcnv tmtx]/nt
t1col =1×20.0130 0.0268
t1rat = tcnv \ tmtx
t1rat = 2.0651

转换大约有两个数量级的效率更高。

重复该案的练习一种是具有1000个通道的多通道信号。优化转换通过预言的表现。

nchan = 1000;tcnv = 0;tmtx = 0;n =零(na+nb-1,nchan);为了kj = 1:nt a = randn(na,nchan);b = randn(nb,1);抽动为了k = 1:nchan n(:,k​​)= cons(a(a(:,k),b);结尾tcnv = tcnv+toc;tic c = convmtx(b,na);d = c*a;tmtx = tmtx+toc;结尾tmcol = [tcnv tmtx]/nt
tmcol =1×20.2224 0.0795
tmrat = tcnv/tmtx
TMRAT = 2.7961

convmtx大约是三倍转换

输入参数

全部收缩

输入向量,指定为行或列。

数据类型:单身的|双倍的

向量的长度卷积,指定为正整数。

  • 如果H是长度的列矢量m,,,,一种(M+N-1)-经过-n,以及一种和一个列向量,X,长度n是卷积HX

  • 如果H是长度的行矢量m,,,,一种n-经过-(M+N-1),以及行矢量的产物,X,长度n一种是卷积HX

输出参数

全部收缩

输入的卷积矩阵H和矢量X,返回为矩阵。

算法

  • convmtx使用该功能toeplitz生成卷积矩阵。

  • convmtx通过零填充处理边缘条件。

扩展功能

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

也可以看看

||||

在R2006a之前引入