how can i separate a matrix into a multiplication of two matrices One of Real Values and the Other for Integer values.
14 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
ahcen aliouat
il 8 Lug 2019
Modificato: Bruno Luong
il 9 Lug 2019
hello,
how can i separate a matrix X into a multiplication of two matrices Y and Z with Y contain Real Values and Z contain Integer values using MATLAB.
such as: X=Y*Z
with:
X= my Input Matrix of NxN.
and i search to obtain:
Y: matrix of integer values.
Z: Matrix of Real Values.
X is suposed to be a NxN matrix.
0 Commenti
Risposta accettata
Bruno Luong
il 8 Lug 2019
Modificato: Bruno Luong
il 8 Lug 2019
Of course.
Test matrix
X = rand(5)
n = length(X)
then
Z = ceil(1000*rand(n,n))
Y = X/Z
Y*Z
3 Commenti
Bruno Luong
il 9 Lug 2019
Modificato: Bruno Luong
il 9 Lug 2019
In general it's not possible for any X.
If you have such decompistion, it's equivalent to each column of X has a common divisor (on the diagonal of Z). And that is right for all column.
This condition is quite strict. But if you know X meets this, then you can write down:
X(:,j) = sum k_(i,j) d_j, for all j=1,2,...,n, with k_(i,j) integers
Then simply take
Z = diag(d)
Y(i,j) = k_(i,j)
You might try to apply euclidian algorithm to find a common divisor of floating points (if any), I'm not sure the bad-effect of floating points round-off on such algorithm (I guess it's far from robust).
Più risposte (1)
Raj
il 8 Lug 2019
There are infinite combinations possible (atleast by theory) in which you can split a real number to multiplication of a real number and an integer. Let me explain:
X=rand(N,N) % your matrix
Y=randi(M,N) % any NxN integer matrix with upper limit as M. INFINITE Possibilities here.
then
Z=X./Y % matrix of real values.
So that you can multiply Y & Z to get back X
X1=Y.*Z
isequal(X,X1) % confirms that X and X1 are equal.
Cheers!!
Vedere anche
Categorie
Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!