1)If I have some matrix F how I can check in Matlab that F=kron(F1,F2),
where I apriori don't know F1 and F2. If so, then how I can find F1 and F2?
2)If I have matrix F which have form F=[A*B;A*C;A*D], and I am apriori know that F has this form and I also know in advance matrices A,B,C,D, then question is whether I can represent F as Kronecker product?
Explanation about what is the Kronecker product can be found in:
what I understand is you want to know somehow reverse Kronecker product (Kronecker decomposition)!
Which, if possible, will not return unique matrices for any given matrices. What I mean is if you are given matrix F, and then there are possibly many matrices Xi and Yi such that F = kron(Xi, Yi).
To check if a matrix is a kronecker product, you can use the permuted SVD as discussed in the attached papers. If the permuted SVD has separation rank 1, then it can be written as a kronecker product of two matrices.
Article Covariance Estimation in High Dimensions Via Kronecker Produ...
Conference Paper Low separation rank covariance estimation using Kronecker pr...
More naively: if F = kron[F1,F2], where F is m by n and F2 is d by e, then F is partitioned into blocks, each of which is a constant multiple of F2. (The constants are the entries in F1.) This means d divides m and e divides n. So for each such pair (d, e), excluding the trivial pair (1,1),
Partition your matrix into d by e blocks, and choose and fix one such block whose entries are not all zero (to whatever precision you use).
For each of the other blocks, compare each entry with the corresponding entry in the original block. If the original entry was zero, then the new entry must be zero. If not, then divide the new entry by the original one: the ratio must be the same throughout the new block.
It should be easy to program and quick to run, because failure with a single entry will exclude that pair (d,e), and the number of divisors grows slowly (and also oscillates wildly).