Mathematical Approach to Detect If a 2D Signal Is Separable
Let's assume our data is in finite dimension.
So $ x \left[ m, n \right] \in \mathbb{R}^{M \times N} $. So it can be written as a matrix $ X \in \mathbb{R}^{M \times N} $.

Using the SVD Decomposition the matrix can be written as:

$$ X = \sum_{i = 1}^{n} {\sigma}_{i} {u}_{i} {v}_{i}^{T} $$

Seprable 2D Matrix is defined as a rank 1 Matrix which can be composed by Outer Product of 2 vectors.
Looking at the SVD Decomposition of $ X $ we can conclude that $ X $ is separable operator if and only if $ \forall i &gt; 1 \; {\sigma}_{i} = 0 $ and it is given by:

$$ X = {\sigma}_{1} {u}_{1} {v}_{1}^{T} $$

So, here is a simple recipe:


Write you data in Matrix Form.
Apply the SVD on the matrix.
In MATLAB it can be done using svd().
Look for the rank of the matrix. Namely how many non vanishing singular values it has.
If the number is 1 the matrix is considered separable. It can be separable by the its first left eigen vector and first right eigen vector.


For example on Separable Operators have a look at - How to Prove a 2D Filter Is Separable?.