matlab的deconv函数为什么会有误差?

[q,r] = deconv(v,u);为什么反卷积计算的时候会产生误差 r?

matlab中的deconv其实是在进行长除法运算。那么在无法除尽的情况下自然会有余数了,这个余数就是误差。
从另一个角度来看,v不一定能由u和某个数列进行卷积得到(即:u和任何数列进行卷积都无法得到v),所以这里所得到的结果q其实是一个近似的结果,此时r可以看作误差。

deconv--反褶积和多项式除法
【功能简介】求向量反褶积和进行多项式除法运算。
【语法格式】[q,r]=deconv(v,u)
参数q和r分别返回多项式v除以多项式u的商多项式和余多项式。

【实例3.33】求多项式(x2+2x+1)与多项式(2x2+x+3)的积,再求积与(x2+2x+1)的商。

>> a=[1,2,1]; >> b=[2,1,3];
>> c=conv(a,b) %求多项式a、b的积
c = 2 5 7 7 3
>> d=deconv(c,a) %求积与a的商
d = 2 1 3
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-12
如果你去看matlab的帮助文档的话,你会发现它的deconv其实是在进行长除法运算。那么在无法除尽的情况下自然会有余数了,这个余数就是r。
从另一个角度来看,v不一定能由u和某个数列进行卷积得到(即:u和任何数列进行卷积都无法得到v),所以这里所得到的结果q其实是一个近似的结果,此时r可以看作误差。追问

你QQ多少啊?想详细请教下您

追答

不好意思哈,不怎么用qq.你还有哪里不太明白?

追问

这种矩阵解卷积法,您见过没?那你说这种方法是不是也存在误差?如是也存在误差,那是为什么原因,可否讲详细点,谢谢了

追答

你的讲义中的方法也可能有误差。从数学上看是因为关于h的矩阵不可逆造成的。考虑这样一种情况:h(0)=0, 而y(0)非零。那么无论f如何,都无法让那个矩阵等式成立。这就是存在误差的情况的一个例子。

追问

说得对,h(0)=0的时候分母为0就无意义了。我们在实际处理信号的时候会避免这种情况,那除了这种情况,还有什么情况会有误差?

追答

我刚才是举了一个例子。其实只要那个矩阵等式无解,就一定有误差。这就得具体分析那个等式了。至于信号处理,我不在行-_-#

本回答被提问者和网友采纳
第2个回答  2019-02-26
就是相当于两个多项式相乘,展开以后再合并,之后的得到的系数就是conv得到的结果。c是系数。
(1*x^2+2*x+3*1)(1*x+2*1)=1*x^3+4*x^2+7*x+6*1;
deconv可以看成是相除得到的系数。q为系数,r为余数。
希望对你有帮助。