如何在 matlab 中用它的时间元素函数来表示一个向量

How to symbolize a vector with its elements function of time in matlab

我正在尝试以这种形式求解一些微分方程

dU/dt=A*U,其中 U 是 N 个元素的向量,N 是用户的输入

所以U=[u1(t);u2(t)...uN(t)],A是NxN矩阵

我想要一个向量 (U),其元素 u1、u2..uN 是时间的函数

我可以这样定义U

U=sym('u',[N 1]);

这是输出:

u1
u2
.
.
uN

如果我写这个

eqn= diff(U)==A*U;
U=dsolve(eqn);

这是我得到的错误

{Error using symengine (line 58)
Could not extract differential variables to solve for. Use 'solve' or
 'vpasolve' to compute the solutions of non-differential equations.

 Error in mupadengine/feval (line 155)
symengine('error',S(8:find(S=='[',1)-2));

 Error in dsolve>mupadDsolve (line 325)
 T = feval(symengine,'symobj::dsolve',sys,x,options);

 Error in dsolve (line 186)
 sol = mupadDsolve(args, options);
} 

他将 U 向量的元素视为一个变量,而不是时间的函数

我该怎么办?

您可以使用 mat2str 和正则表达式来创建字符串 '[u1(t);u2(t); ... ]':

str= mat2str((1:N).');     % create the string '[1;2;...;N]'
% replace the digit sequences with 'u<digit sequence>(t)'
str= regexprep(str,'(\d)+','u$&(t)');  
u= sym(str);