conv
卷积和多项式乘法
说明
示例
创建包含多项式 和 的系数的向量 u 和 v。
u = [1 0 1]; v = [2 7];
使用卷积将多个多项式相乘。
w = conv(u,v)
w = 1×4
2 7 2 7
w 包含 的多项式系数。
创建两个向量并求其卷积。
u = [1 1 1]; v = [1 1 0 0 0 1 1]; w = conv(u,v)
w = 1×9
1 2 2 1 0 1 2 2 1
w 的长度为 length(u)+length(v)-1,在本例中为 9。
创建两个向量。计算与 u 大小相同的 u 和 v 的卷积的中心部分。
u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,"same")w = 1×7
15 5 -9 7 6 7 -1
w 的长度为 7。全卷积的长度将为 length(u)+length(v)-1,在本例中为 10。
输入参数
输入向量,指定为行或列向量。向量 u 和 v 可具有不同的长度或数据类型。
当 u 或 v 的类型为 single 时,输出的类型为 single。否则,conv 会将输入转换为类型 double,并返回类型 double。
数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
复数支持: 是
卷积的分段,指定为 "full"、"same" 或 "valid"。
"full" | 全卷积(默认值)。 |
"same" | 与 |
"valid" | 仅计算的没有补零边缘的卷积部分。使用此选项时, |
输出参量
卷积向量,以行向量或列向量形式返回。
详细信息
两个向量 u 和 v 的卷积,表示 v 滑过 u 时依据这些点确定的重叠部分的面积。从代数方法上讲,卷积是与将其系数为 u 和 v 元素的多项式相乘相同的运算。
m = length(u) 和 n = length(v)。则 w 是长度为 m+n-1 且第 k 个元素为
的向量
总和通过计算 j 的所有值而得,这生成 u(j) 和 v(k-j+1) 的合法下标,具体而言是 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)
使用此定义,conv 计算两个向量的直接卷积,而不是基于 FFT 的卷积。
扩展功能
conv 函数支持 tall 数组,但存在以下使用说明和限制:
输入
u和v必须为列向量。如果
shape是"full"(默认值),则u和v中只有一个可以是 tall 数组。如果
shape是"same"或"valid",则v不能为 tall 数组。
有关详细信息,请参阅tall 数组。
用法说明和限制:
如果使用
shape参量,它在代码生成时必须为常量。对于输入参量
u和v:您必须在代码生成时将输入向量指定为固定大小或可变长度的向量。向量的第一个或第二个维度可以是可变大小。所有其他维度必须具有固定大小 1。
输入向量
u和v必须具有相同的方向。
请参阅“C/C++ 代码生成”部分中的用法说明和限制。同样的用法说明和限制也适用于 GPU 代码生成。
conv 函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
conv 函数完全支持 GPU 数组。要在 GPU 上运行该函数,请将输入数据指定为 gpuArray (Parallel Computing Toolbox)。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
conv 函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出当您使用 w = conv(u,v) 或 w = conv(u,v,"full") 计算全卷积时,输出 w 是行向量,除非输入向量 u 和 v 都是列向量。
例如,如果您对行向量和列向量进行卷积,则输出是行向量。
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2 7 6 7 4u = [1; 0; 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4为了进行比较,在以前的版本中,当计算全卷积时,conv 函数根据 u 和 v 的方向和长度返回行向量或列向量。
例如,在以前的版本中,conv 将 1×3 行向量与 3×1 列向量的全卷积以 5×1 列向量形式返回。
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4conv 将 1×3 行向量与 2×1 列向量的全卷积以 1×4 行向量形式返回。u = [1 0 1]; v = [2; 7]; w = conv(u,v)
w =
2 7 2 7w = conv(u,v,"same") 或 w = conv(u,v,"valid") 的输出没有变化,输出仍遵循第一个输入向量 u 的方向。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)