鉴于:
    x(n1,n2) = {1 ,n1=0,n2=0 ;
                2 ,n1=1,n2=0 ;
                3 ,n1=0,n2=1 ; 
                6 ,n1=1,n2=1 }
如何证明它是可分离的?
鉴于:
    x(n1,n2) = {1 ,n1=0,n2=0 ;
                2 ,n1=1,n2=0 ;
                3 ,n1=0,n2=1 ; 
                6 ,n1=1,n2=1 }
如何证明它是可分离的?
Nilesh Padhi,欢迎来到 DSP 社区。
可分离的经典定义意味着由给出的数据(2D)可以写成:
其中,和。
这称为 Rank 1 矩阵。
,如何获得这些参数和向量?
好吧,奇异值分解(SVD) 就是用来保存数据的。
的 SVD 由下式给出:
 for时,您可以看到这些匹配。
所以你应该做的是:
epsThr = 1e-7;
[mU, mD, mV] = svd(mX);
vD = diag(mD);
if(all(vD(2:end) < epsThr))
    vU = mU(:, 1);
    vV = mV(:, 1);
end
我们检查了 2 及以后的奇异值是否确实很小。
如果他们这样做(您可以通过 来决定小到什么程度epsThr),那么它是可分离的,并且向量是vU和vV。
在你的情况下:
mX = [1, 3; 2, 6];
[mU, mD, mV] = svd(mX);
vD = diag(mD);
disp(vD);
结果是:
vD =
    7.0711
    0.0000
由于vD除第一个元素(仅单个非消失奇异值)之外的值为零,因此它是可分离的。
确实,您可以看到:
mD(1) * mU(:, 1) * mV(:, 1).'
ans =
    1.0000    3.0000
    2.0000    6.0000
正如预期的那样。
当我们想要与 2D 内核进行卷积时,这种方法在图像处理中非常有用,并且我们发现它是可分离的,因此我们可以使用 2 个 1D 卷积(沿列/行)来应用 2D 卷积。
在这种情况下,我们定义和其中是奇异值。
然后我们沿列卷积\。