-2

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

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.

请帮忙。

4

1 回答 1

1

当尝试如此复杂的事情时,将其分解并尝试更小的部分。例如,当我在命令行运行它时:

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(elements(i,1)) ,这没有任何意义。尝试一些更小的部分,就像我在上面展示的那样,来试验根据其他函数句柄定义的函数句柄。你可能会发现一些惊喜。

于 2013-06-06T14:34:35.753 回答