鉴于:
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 卷积。
在这种情况下,我们定义和其中是奇异值。
然后我们沿列卷积\。