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]
这样,当我致电A(2)
时,它会给我f2
,而{{1}}反过来给我{{1}} 4当我写f2(2)
我已经知道如何将输入作为内联函数并使用此程序(http://www.mathworks.com/matlabcentral/fileexchange/33025-convert-inline-to-symbolic/content/inline2sym.m)我将其转换为sym。但如果它存在,我想要一种更简单的方法。
答案 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
我希望我能正确理解你的问题,这会有所帮助。