我有类似的东西。其中RC.p14是一些依赖于某些参数的函数。
t=ogj.a:ogj.s:ogj.b;
lk1 = zeros(1,length(t));
f1=RC.lkPrepare(@RC.p14,l1);
for i=1:length(t)
lk1(i)=RC.lk(@RC.p14,l1,t(i),f1);
end
end
function res=lk(p,l,t,f)
res=subs(f, 'z', t)/p(l,t);
end
function res=lkPrepare(p,l)
syms z
res=diff(1-p(l,z));
end
但是循环中的潜艇花费了太多时间。有没有办法为循环准备函数?
答案 0 :(得分:0)
函数subs
允许在单次调用时替换多个值(例如向量或矩阵)。在您的情况下,您可以在没有循环的情况下进行替换:
t=ogj.a:ogj.s:ogj.b;
f1=RC.lkPrepare(@RC.p14,l1);
lk1=RC.lk(@RC.p14,l1,t,f1);
end
function res=lk(p,l,t,f)
syms z
res=subs(f, z, t)./subs(p(l,z), z, t);
end
函数subs(p(l,z), z, t)
中的表达式lk
用于避免在函数RC.p14
不能与多个输入一起使用时出现问题。
如果来自RC.p14
的输出是大小为n x 1的向量,则此解决方案也将起作用。在这种情况下,函数f1
是具有相同大小(n x 1)的RC.p14
的导数。函数lk中的两个子操作的输出将具有n×m的大小,其中m是数组t的大小。