Azzera filtri
Azzera filtri

array of symbolic variables which are function of time

8 visualizzazioni (ultimi 30 giorni)
p = sym('p', [m 1]);
the above code gives me an array of symbolic variables, where m is the size of the matrix. However i want to create an array of symbolic variables which are function of time i.e. p1(t),p2(t),.... .

Risposta accettata

Walter Roberson
Walter Roberson il 26 Ott 2017
There is no facility to do this. You will need to loop (or equivalent). For example in R2017b or later,
p = arrayfun(@(N) str2sym(sprintf('p%d(t)',N)), 1:5).'
  3 Commenti
Walter Roberson
Walter Roberson il 26 Ott 2017
ptemp = arrayfun(@(N) sym(sprintf('p%d(t)',N)), (1:m).', 'uniform', 0);
p = vertcat(ptemp{:});
You might get m warnings along the line of
Warning: Support of character vectors that are not valid variable names or define a number will be removed in a future release. To create symbolic
expressions, first create symbolic variables and then use operations on them.
Jai Tushar
Jai Tushar il 28 Ott 2017
Modificato: Jai Tushar il 28 Ott 2017
it worked!!
what does uniform and 0 do in the code?
Also,
ptemp = arrayfun(@(N) sym(sprintf('p%d(t)',N)), (1:2), 'uniform', 0); p = vertcat(ptemp{:});
A = [1 2; -1 1]; odes = diff(p) == A*p
Gives me the output as
odes =
diff(p1(t), t) == p1(t) + 2*p2(t)
diff(p2(t), t) == p2(t) - p1(t)
Why is odes not the funtion of time in the output. When i define p1(t),... and so on manually and define P = [p1; p2] then odes == diff(P) = A*p gives odes as a function of time i.e. odes(t) in the output. W

Accedi per commentare.

Più risposte (2)

Juraj Lieskovský
Juraj Lieskovský il 4 Mar 2021
Modificato: Juraj Lieskovský il 4 Mar 2021
Simple solution (using R2020b)
syms t
syms p(t) [m,1]

KSSV
KSSV il 26 Ott 2017
syms p1(t) p2(t) p3(t)
p = [p1 p2 p3]
  1 Commento
Jai Tushar
Jai Tushar il 26 Ott 2017
Modificato: Jai Tushar il 26 Ott 2017
you are defining p1(t),... manually here.
I want my script to define them according to the size of the square matrix i enter. For example if i have a (user input) nxn matrix, then the script should define n such symbolic variables which are functions of time.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by