【发布时间】:2020-01-30 01:49:07
【问题描述】:
在给定的等式中,只有“s”是变量。其余的是一些已知的常数,但它们在循环内部发生变化。我想将其作为函数句柄获取,因为稍后我需要找到该函数的根。
此问题与this one which I asked recently 有关。但是答案似乎效率低下,我无法为整个事情获取单个函数句柄。有什么办法吗?
我的审判:
K=10;
N=4;
for ii=1:K
for jj=1:N
f{ii,jj}=@(x) p_th0{ii}(jj).*log(p_th1{ii}(jj)/p_th0{ii}(jj)).*(p_th1{ii}(jj)/p_th0{ii}(jj)).^x;
end
end
function y = sum_of_functions(f,x)
y = 0;
for ii=1:numel(f)
y = y + f{ii}(x);
end
end
r = FindRoots(@(x)sum_of_functions(f,x),A,B,2^5,0);
在此代码中,“x”(对应于公式中的“s”)是稍后为其求根的变量。 “p_th0”和“p_th1”是一些已知常数的单元格(在外部while循环内变化)。在上面这部分的代码中, f{ii,jj}=@(x) 缺少我们需要将总和除以的项。所以它只考虑给定图中分子的双和。
我还需要注意的是,我很不高兴没有一个函数句柄来处理整个事情。我所拥有的只是一个具有一些功能的单元格,每次我需要评估总和时,我必须先建立总和。相反,我想构建一次函数句柄的总和,然后在“FindRoots”中使用这个函数句柄。
【问题讨论】:
-
我只想写一个计算这个的函数。我完全不明白你现在是怎么回答上一个问题的。我想你想多了。
-
为什么需要函数句柄?你能给出示例输入和输出吗?
-
@beaker 是的,请稍等。
-
@CrisLuengo 我不这么认为,但如果我遗漏了什么,你可能是对的。我同意只有一个功能,但如何?我无法总结上一个问题中的函数句柄。例如让 K=10 和 mk=4。如果 p0 和 p1 已知,那么我们应该能够对函数句柄求和以获得最终的函数句柄。让我提供更多关于我的试验的材料。
标签: matlab function loops for-loop anonymous-function