2011-03-04 73 views

回答

1

該解決方案几乎提供確切的要求在你的問題。儘管使用EVAL,但我會覺得有點奇怪。你也想把一些錯誤檢查包裝進去。

classdef f < handle 

    properties (Access = private) 
     functionString = ''; 
    end 

    methods 
     function obj = f 
      if nargin == 0 
       obj.functionString = input('Enter your function: ', 's'); 
      end 
     end 

     function value = subsref(obj, a) 
      a = a.subs{:}; 
      value = eval(obj.functionString); 
     end 

     function display(obj) 

     end 
    end 

end 

然後,您可以使用這個類,如:

 
>> a = f 
Enter your function: a^2+3*a-3 
>> a(1) 

ans = 

    1 

>> a(2) 

ans = 

    7 
+0

酷,它工作正常!好的,如果我想要它返回拉普拉斯函數的初始值(即f(0))(例如,如果我們有F(s),fs =(s^2 + 6 * s + 9)/(s^3 + 2 * s^2-s-2),然後我們找到等於ft = ilaplace(fs)的f(t);如何找到值爲0的f(t))這就是我想要做的全部 – 2011-03-05 00:19:39

+0

@Eng。 Fouad:將上面的類中的行從'a = a.subs {:};'更改爲't = a.subs {:};'。在命令行運行'ilaplace(fs)',複製結果,通過在命令行輸入'a = f'運行上面的類並在提示輸入函數時粘貼。 – 2011-03-05 00:32:21

+0

@ b3:有沒有辦法將ilaplace方法包含進類中,所以我不需要複製和粘貼任何東西 – 2011-03-05 00:45:33

3

另一種解決方案是使用函數處理:

 
>> [email protected](x) x^2+3*x-3 

f = 

    @(x)x^2+3*x-3 

>> f(1) 

ans = 

    1 

>> f(2) 

ans = 

    7