在MATLAB中无需硬编码即可创建符号函数

时间:2017-04-02 05:06:06

标签: matlab

我想创建符号函数theta1(t)theta2(t)theta3(t),...,thetaN(t)其中N是我可以在MATLAB中定义的参数。我知道我可以使用类似sym('theta',[1 N])的内容来获取[theta1, theta2, theta3,..., thetaN]。但是,我怎么能用theta作为t的函数来做同样的事情呢?对它进行硬编码的方法就像syms theta1(t) theta2(t) theta3(t) ... thetaN(t),但我想把这个做成一般。

我不想在这里直接使用sym命令,因为“在将来的版本中将删除对非有效变量名称且不定义数字的字符向量的支持”,这意味着类似sym('theta1(t)')在将来的版本中无效。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

计算出部分内容。我可以做类似以下的事情

for i = 1:N
    syms(strcat('theta',num2str(i),'(t)'))
end

但是,如果我想分配一个包含所有符号表达式的变量,我仍然会卡住。如果我试试

for i = 1:N
    my_array(i) = syms(strcat('theta',num2str(i),'(t)'))
end

我得到Error using syms (line 133). Using input and output arguments simultaneously is not supported.如果我使用sym代替syms,它会有效,但这会导致我在原帖中提到的警告。