我有以下代码:
s(i+1)=NRK(Dt*f(tv(i+1),x)+s(i)-x,s(i));
其中NRK=NRK(function , numeric scalar)
这是符号实现,f =符号函数,x是未知数的符号数组。
问题在于使用符号表达式可以解决问题,但这会在一个循环中进行,符号工具会以令人惊讶的速度放慢100倍的性能!但是,匿名函数可以完美地完成工作。
我的尝试如下:
h=@([arguments (i.e. a, b, c, ...])Dt*f(t(i+1),[arguments (i.e. a, b, c,...])+s(i)-[a b c ...];
s(i+1)=NRK(@h,s(i));
我怎样才能写出这些论点?可能吗?
答案 0 :(得分:0)
您可以在括号中指定它们:
h = @( a, b, c ) Dt*f( t(ii+1), a, b, c ) + s(ii);
然后致电
s(ii+1) = NRK( h, s(ii) );
一些评论:
- 向@
提供h
时,您无需额外编写NRK
,因为h
已被定义为函数句柄。
- 最好not to use i
as a variable name in Matlab。