conv(向量卷积运算)
两个向量卷积,简单理解其实就是多项式乘法。
比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积计算方法如下:
把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2
同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。
卷积就是“两个多项式相乘取系数”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷积的结果就是[1 3 5 3]
注意:当确定是前一个序列用升幂或是降幂排列后,后一个序列也都要按这个方式排列,否则结果是不对的。
p = [1 2 3]q=[1 1]
conv(p,q)
ans =
1 3 5 3
扩展资料:
matlab中的convn函数
语法格式:
w=convn(u,v)
计算矩阵u,v的卷积,w的尺寸为size(u)+size(v)-1;
w=convn(u,v,'shape')
返回卷积的一部分,这部分有参数shape决定:
full 返回完整的卷积(默认);
same 返回卷积的中心部分,与u有相同的大小;
valid 仅返回卷积中的那些被计算而没有填充零的部分,w的尺寸大小为max(size(u)-size(v)+1,0)。
参考资料来源:百度百科-卷积
区别在于:
在MATLAB中,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以用函数 y=conv(x,h)计算卷积,用y=impz(p,d,N)求系统的冲激响应。
y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列。输出结果长度数等于x的长度。
而y=conv(x,h)是用来实现卷级的,对x序列和h序列进行卷积,输出的结果个数等于x的长度与h的长度之和减去1。
y=impz(p,d,N)是用来实现冲击响应的,d和p的定义见filter,N表示冲击响应输出的序列个数。
matlab的作用:
用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)