array of symbolic variables which are function of time

11 views (last 30 days)
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),.... .

Accepted Answer

Walter Roberson
Walter Roberson on 26 Oct 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).'
Jai Tushar
Jai Tushar on 28 Oct 2017
it worked!!
what does uniform and 0 do in the code?
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

Sign in to comment.

More Answers (2)

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

KSSV on 26 Oct 2017
syms p1(t) p2(t) p3(t)
p = [p1 p2 p3]
  1 Comment
Jai Tushar
Jai Tushar on 26 Oct 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.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!