Matlab,符号函数,

时间:2015-01-14 06:22:06

标签: arrays matlab

  1. 如何让用户输入一个函数(比如:t)并将其存储为符号函数?
  2. 之后我想将所有符号函数存储在一个数组中: 假设我的第一个函数是:f1 ( and I have gotten information of f1 by user in step 1 as f1=t) 第二个是:f2 (and I have gotten information of f2 by user in step 1 as f2=t^2) 现在我想制作一个数组 A= [ f1, f2]
  3. 这样,当我致电A(2)时,它会给我f2,而{{1}}反过来给我{{1}} 4当我写f2(2)

    我已经知道如何将输入作为内联函数并使用此程序(http://www.mathworks.com/matlabcentral/fileexchange/33025-convert-inline-to-symbolic/content/inline2sym.m)我将其转换为sym。但如果它存在,我想要一种更简单的方法。

1 个答案:

答案 0 :(得分:0)

从你的问题来看,在我看来,你想要/需要的不是一个真正的符号函数,而是一个函数句柄。如果是这种情况,我会选择类似下面的代码。为“丑陋的事情”道歉,例如while 1,......但它让例子简短:

A = {};
while 1
    str = input('Enter a function of t (simply press return to exit):','s');
    if isempty(str), break; end
    A{end+1} = str2func(['@(t) ' str]);
end

当我运行它时,我可以输入“t”的一些功能:

Enter a function of t (simply press return to exit):t
Enter a function of t (simply press return to exit):t.^2
Enter a function of t (simply press return to exit):sin(t)
Enter a function of t (simply press return to exit):

单元格数组A包含:

A = 
    @(t)t    @(t)t.^2    @(t)sin(t)

您可以通过以下方式调用函数:

>>A{3}(pi/2)

ans =

     1

我希望我能正确理解你的问题,这会有所帮助。