将函数句柄存储在数组中,然后在MATLAB中添加它们

将函数句柄存储在数组中,然后在MATLAB中添加它们,matlab,symbolic-math,Matlab,Symbolic Math,我试图通过运行一个循环,然后添加函数句柄,将它们存储在数组中 for i = 1:n^2 x1 = x_coord(elements(i,1)); x2 = x_coord(elements(i,2)); x3 = x_coord(elements(i,3)); x4 = x_coord(elements(i,4)); y1 = y_coord(elements(i,1)); y2 = y_coord(elements(i,2)); y3

我试图通过运行一个循环,然后添加函数句柄,将它们存储在数组中

for i = 1:n^2
    x1 = x_coord(elements(i,1));
    x2 = x_coord(elements(i,2));
    x3 = x_coord(elements(i,3));
    x4 = x_coord(elements(i,4));
    y1 = y_coord(elements(i,1));
    y2 = y_coord(elements(i,2));
    y3 = y_coord(elements(i,3));
    y4 = y_coord(elements(i,4));

    SF(elements(i,1)) = @(x,y)((x-x3)*(y-y3)/((x1-x3)*(y1-y3)) + SF(elements(i,1)(x,y))
end
在这里,我将函数句柄保存在数组
SF
中,然后将它们添加到循环中。 但我得到了这个错误:

Error: ()-indexing must appear last in an index expression.

请帮忙。

当你尝试这么复杂的东西时,把它拆开,试一下小的。例如,当我在命令行中运行此命令时:

F(1) = @(x,y)(x+y);
F(2) = @(x,y)(x+y+2);
我得到以下错误消息:不允许函数句柄的非标量数组;改用单元阵列。

哎呀。我想你需要这个:

F{1} = @(x,y)(x+y);
F{2} = @(x,y)(x+y+2);
现在,可以肯定的是,
F{1}(1,2)
按预期工作


不起作用的是程序的整体逻辑,因为您试图递归地定义SF(元素(i,1))本身,这没有任何意义。尝试一些更小的部分,如我上面展示的,来试验根据其他函数句柄定义的函数句柄。您可能会发现一些惊喜。

什么是
whos元素
返回的?通常
A(m,n)(x,y)
是无效的MATLAB语法。元素是返回整数的矩阵。我应该使用什么语法来添加函数句柄???@AviShri这个循环到底要实现什么?即使它是正确的,在另一个函数句柄中添加
SF(元素(i,1)
有什么意义?你认为它有什么意义?进行多尺度建模(有限元分析)因此,我需要为每个节点定义形状函数。我必须使用升压函数,以便我可以为不同的域分段定义函数。当我试图根据自身定义函数时,它只用于简单的相加,而不是在循环中进行。我需要将所有函数相加,因为我使用升压函数来定义不同的函数erent区域。我只需要首先使所有句柄都等于0。实际上,它在简单函数的命令窗口中工作,但当我在循环中使用它时,它不会给你像计算{2}(1,2)给出“[function handler]”或类似“SF{2}(0,0)ans=分段”这样的值([0既然语法错误已经修复,您可能需要编写一个新问题,或者在此问题上添加一系列解释和示例代码,清楚地列出您要做的事情和问题所在。