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)
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.

Risposta accettata

Bruno Luong
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
ahcen aliouat
ahcen aliouat il 9 Lug 2019
hello,
please @bruno could you give me an idea on how to get it in a way that the Real values matrix will be a diagonal matrix? ( identified just in the diagonal )
i will appreciate your help.
thank you
Bruno Luong
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).

Accedi per commentare.

Più risposte (1)

Raj
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!!
  1 Commento
ahcen aliouat
ahcen aliouat il 9 Lug 2019
thank you very much.
do you have an idea on how to get it in a way that the Real values matrix will be a diagonal matrix? ( identified just in the diagonal )
i will appreciate your help.
thank you

Accedi per commentare.

Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

Prodotti


Release

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by