【发布时间】:2019-10-08 12:41:15
【问题描述】:
我有一个有趣的问题是关于 K 向量相互卷积。 K-1 向量的所有元素都是已知的。例如:
v1,v2,...vk,...,vK
并且所有向量的所有元素,除了vk,都是已知的,只有vk的两个相邻元素是参数。例如:
v1=[p1 p2 4 5];
v2=[1 4 2 3 2 1];
v3=[1 1 1 2];
v4=[2 2 1 3 4];
问题如下:
让''v''是v1,v2,v3,v4的卷积,即(假设conv象征性地工作)
v=conv(v1,v2);
v=conv(v,v3);
v=conv(v,v4);
那么,v的每个元素可以写成如下:
v(n)=a0(n)+a1(n)*p1+a2(n)*p2
例子:让我们有两个向量
v1=[1, 1,1]
v2=[p1,p2,1]
然后
v=[p1,p1+p2,p1+p2+1,p2+1,1]
结果我们有
a0=[0,0,1,1,1], a1=[1,1,1,0,0], a2=[0,1,1,1,0]
所以a0是v的每个元素的常数,a1是p1的乘数,a2是p2的乘数
我想要一个高效的算法,可以计算 a0(n)、a1(n) 和 a2(n)。在下一次迭代中,我改变了参数,但同样的问题。一班后我会有
v1=[3 p1 p2 5];
v2=[1 4 2 3 2 1];
v3=[1 1 1 2];
v4=[2 2 1 3 4];
两班后:
v1=[3 1 p1 p2];
v2=[1 4 2 3 2 1];
v3=[1 1 2 2];
v4=[2 2 1 3 4];
三班倒后:
v1=[3 1 4 5];
v2=[p1 p2 2 3 2 1];
v3=[1 1 1 2];
v4=[2 2 1 3 4];
这个过程一直持续到
v1=[3 1 4 5];
v2=[1 4 2 3 2 1];
v3=[1 1 1 2];
v4=[2 2 1 p1 p2];
在每次迭代中,我需要获得 a0(n)、a1(n) 和 a2(n)。所以总共有 15 次迭代,每次迭代我将获得 3 个向量。因此,我总共需要获得一个具有 15 行和 3xlength(a0) 列的矩阵。
i=1 -> a0_i,a1_i,a2_i, for i=1,...,15.
我的想法是将所有向量的所有元素定义为参数 p1,...pK。然后象征性地对它们进行一次卷积。这给出了 v(p1,...,pN)。然后在每次迭代中,除了两个感兴趣的相邻参数外,我可以给出所有其他值并且我可以评估 v 例如:
v(p1,p2,1,3 4,....,2)
在此之后,我可以检查 v 的每个元素是否有
v(n)=a0(n)+a1(n)*p1+a2(n)*p2
并提取a0(n)、a1(n)和a2(n)。
首先我不确定这是否有效。因为,在每次迭代中,我必须评估整个符号事物 v(p1,p2,1,3 4,....,2),这可能是不必要的,因为我只是对参数进行了简单的迭代。其次,我不知道如何象征性地对 K 个向量进行卷积,或者这是一个好主意还是坏主意。
另一个想法是看到除了一个向量之外,所有向量都不包含任何参数。所以可以先用conv函数对这些向量进行卷积,得到v*。然后,a1(n) 和 a2(n) 似乎只是 v* 的元素,只有一个是另一个移位的元素。以下是我在一篇论文中所做的示例(p1, p2 是参数,p3, p4 是已知的,a1,..,a13 是已知向量的卷积结果):
这种方法看起来更清晰,但在每次迭代中,都必须对 K-1 个向量进行卷积。因此,似乎需要进行大量计算,并且可能许多计算与前一次迭代相同。因此,在我看来效率并不高。
问题:给定 K 个任意长度的任意向量,如何有效地计算上述向量?
【问题讨论】:
-
如果我正确理解您的问题
a0、a1和a2是与v长度相同的向量,对吗?但在这种情况下,您的所有方程系统都将是欠定的,因此将有无数个可能的a0、a1和a2。如果我误解了这个问题,请您添加一个特定案例的解决方案。 -
另外我不明白你的句子
let ''v'' be the convolution of v1,v2,v3,v4。卷积只能暗示两个函数(连续)或两个向量(离散)。那么v怎么可能是4个向量的卷积呢? -
是的,a0、a1、a2 是与 v 长度相同的向量。这里没有方程系统。我们正在逐个索引查找。因此,假设您将 [1, 1,1] 与 [p1,p2,1] 进行卷积。那么 v=[p1,p1+p2,p1+p2+1,p2+1,1]。然后我们有 a0=[0,0,1,1,1],a1=[1,1,1,0,0],a2=[0,1,1,1,0]。所以a0是v的每个元素的常数,a1是p1的乘数,a2是p2的乘数。现在清楚了吗?
-
v=conv(v1,v2); v=conv(v,v3);最后是 v=conv(v,v4);所以所有这 4 个相互卷积。
-
好的,现在很清楚了,请随时在您的问题中添加此信息。只需一个参数,您就可以使用复数(使用
p1 = 1i)。然后将实部和虚部分开就可以解决问题。
标签: matlab parameters convolution