Azzera filtri
Azzera filtri

Extract matrices out of a symbolic matrix

1 visualizzazione (ultimi 30 giorni)
Let's assume I have a matrix which looks something like:
Mtx = [2,3*x;4*x^2,1]
Is it "symbolically" possible to get 3 matrices out of this, which look like:
Mtx1 = [2,0;0,1]
Mtx2 = [0,3*x;0,0]
Mtx3 = [0,0;4*x^2,0]
Is there a function, that can do this or should I do it manually?

Risposta accettata

Andrew Newell
Andrew Newell il 20 Apr 2017
Modificato: Andrew Newell il 20 Apr 2017
It looks like you are trying to extract the diagonal, upper triangular and lower triangular parts of the matrix. These commands will do it for larger matrices as well:
Mtx1 = diag(diag(Mtx));
Mtx2 = triu(Mtx,1);
Mtx3 = tril(Mtx,-1);
  3 Commenti
Andrew Newell
Andrew Newell il 20 Apr 2017
O.k., for the example you have given, this will do it:
syms x
Mtx = [2,3*x;4*x^2,1];
Mt3 = diff(Mtx,x,2)*x^2/2;
Mt2 = diff(Mtx-Mt3,x,1)*x;
Mt1 = Mtx-Mt2-Mt3;
It would be straightforward to generalize this to higher derivatives, remembering that for the nth derivative you have to divide by n factorial.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by