conv
fi
对象的卷积和多项式乘法
说明
示例
使用 16 抽头 FIR 滤波器对含 22 个采样的序列进行卷积
求使用 16 抽头 FIR 滤波器对含 22 个采样的序列进行的卷积。
x
是一个由有符号值组成的 22 个采样的序列,其字长为 16 位,小数长度为 15 位。h
是 16 抽头 FIR 滤波器。
u = (pi/4)*[1 1 1 -1 -1 -1 1 -1 -1 1 -1]; x = fi(kron(u,[1 1])); h = firls(15, [0 .1 .2 .5]*2, [1 1 0 0]);
由于 x
是 fi
对象,因此不需要将 h
转换为 fi
对象就可以执行卷积运算。conv
函数使用最佳精度定标自动执行此运算。
使用 conv
函数来对这两个向量求卷积。
y = conv(x,h);
该运算生成一个有符号 fi
对象 y
,其字长为 36 位,小数长度为 31 位。与输入相关联的默认 fimath
属性确定输出的 numerictype
。输出没有局部 fimath
。
两个 fi
向量的卷积的中心部分
创建两个 fi
向量。求解与 a
大小相同的 a
和 b
的卷积的中心部分。
a = fi([-1 2 3 -2 0 1 2]);
b = fi([2 4 -1 1]);
c = conv(a,b,'same')
c = 15 5 -9 7 6 7 -1 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 34 FractionLength: 25
c
的长度为 7。全卷积的长度将为 length(a)+length(b)-1
,在本例中为 10。
输入参数
a,b
— 输入向量
向量
输入向量,指定为行向量或列向量。
如果有任一输入是内置数据类型,则在执行卷积运算之前,conv
会使用最佳精度规则将其转换为 fi
对象。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
复数支持: 是
shape
— 卷积的分段
'full'
(默认) | 'same'
| 'valid'
卷积的分段,指定为下列值之一:
'full'
- 返回全卷积。此选项是默认形状。'same'
- 返回与输入向量a
大小相同的卷积的中心部分。'valid'
- 仅返回函数计算的没有补零边缘的卷积部分。使用此选项时,输出向量c
的长度为max(length(a)-max(0,length(b)-1),0)
。
数据类型: char
详细信息
卷积
两个向量 u
和 v
的卷积,表示 v
滑过 u
时依据这些点确定的重叠部分的面积。从代数方法上讲,卷积就是与将其系数为 u
和 v
元素的多项式相乘的运算。
设 m = length(u)
,n = length(v)
。则 w
是长度为 m+n-1
的向量,其第 k
个元素是
对生成 u(j)
和 v(k-j+1)
的合法下标的 j
的所有值求和,具体而言就是 j
=
max(1,k+1-n):1:min(k,m)
。当 m
=
n
时,这使
w(1) = u(1)*v(1) w(2) = u(1)*v(2)+u(2)*v(1) w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1) ... w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1) ... w(2*n-1) = u(n)*v(n)
算法
与输入相关联的 fimath
属性确定输出 fi
对象 c
的 numerictype
属性:
如果
a
或b
有局部fimath
对象,则conv
使用该fimath
对象来计算中间量并确定c
的numerictype
属性。如果
a
和b
都没有关联的fimath
,则conv
使用默认fimath
来计算中间量并确定c
的numerictype
属性。
如果有任一输入是内置数据类型,则在执行卷积运算之前,conv
会使用最佳精度规则将其转换为 fi
对象。
输出 fi
对象 c
始终使用默认值 fimath
。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
使用说明和限制:
仅当起控制作用的
fimath
的SumMode
属性设置为SpecifyPrecision
或KeepLSB
时,可变大小的输入才受支持。对于可变大小信号,您可能会看到生成的代码与 MATLAB® 之间的结果不同。
在生成的代码中,可变大小信号的输出是使用起控制作用的
fimath
的SumMode
属性计算的。在 MATLAB 中,当两个输入均为非标量时,可变大小信号的输出是使用起控制作用的
fimath
的SumMode
属性计算的。然而,如果任一输入是标量,则 MATLAB 使用起控制作用的fimath
的ProductMode
来计算输出。
版本历史记录
在 R2009b 中推出
另请参阅
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)