matlab提高了回路中SUB的性能
我有这样的东西。其中RC.p14是依赖于某些参数的函数matlab提高了回路中SUB的性能,matlab,Matlab,我有这样的东西。其中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 re
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
但循环中的潜艇花费了太多的时间。有没有办法为循环准备函数?函数
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
函数lk
中的表达式subs(p(l,z),z,t)
用于避免函数RC时出现问题。p14
不能处理多个输入
如果
RC.p14
的输出是大小为nx1的向量,则此解决方案也将起作用。在这种情况下,函数f1
是具有相同大小(nx1)的RC.p14
的导数。函数lk中两个SUB操作的输出将具有大小n x m,其中m是数组t的大小。但if@RC.p14复杂函数,其中包括带参数t的函数。可能是因为它返回向量,而RC.p14将返回错误或矩阵。@user1983504我在答案中添加了注释。此外,如果p不允许多个输入,函数lk应该使用中间符号函数计算p。