我应该如何重写此代码以不使用feval?

时间:2015-04-19 18:04:14

标签: matlab refactoring

我最近在应用数值方法课上完成了一个作业集,并且做得很好。但是,我的教授做了一个说明,说我不应该使用feval()函数,因为它已经过时了。

我只是想知道我应该使用什么。

以下是有问题的代码

%% function file
function E=euler(f,a,b,ya,h)
    t=a:h:b;
    y(1)=ya;
    for i=1:length(t)-1
        y(i+1) = y(i) + h*(feval(f,t(i),y(i)));
    end
     t = t';
     y = y';
     E=t;
     plot(t,y)
     xlabel('t')
     ylabel('y') 
end



%% script file    

h = 0.01;
figure(2)
y1=euler(f, a, b, ya, h);

h = 0.001;
figure(3)
y2=euler(f, a, b, ya, h);

h = 0.0001;
figure(4)
y3=euler(f, a, b, ya, h);

如何在不使用feval函数的情况下编写此代码以正确评估Euler函数。

1 个答案:

答案 0 :(得分:6)

blog post Loren 中指出,在2004年 Release 14 之前,您必须使用feval来评估函数句柄。

  

在版本14中,我们删除了使用feval来评估函数的需要   处理。相反,它们可以直接评估。

现在您只需使用f(t(i),y(i))代替feval(f,t(i),y(i))