在MATLAB中从嵌套for循环中调用函数

时间:2018-06-01 20:02:12

标签: matlab function-calls

我在嵌套for循环中调用我的函数时遇到了一些问题,并且想知道是否有人可以解决这个问题......

new_location = 50x2单元格位置矩阵* 0.1

B = 150x150 rand vals矩阵

for j = 1:numel(new_location(:,1)) 
    for k = 1:numel(new_location(:,2))
    if new_location(j + 1) - new_location(j) < 0.3
       final_location = check_intensity(B(j),B(j + 1),new_location(j),new_location(j + 1));
    else if new_location(k + 1) - new_location(k) < 0.3
       final_location = check_intensity_2(B(k),B(k + 1),new_location(k),new_location(k + 1));
        else
            ;
        end
    end
    end
end

用户定义的功能:

function final_location = check_intensity(B(j),B(j + 1),new_location(j),new_location(j + 1))
if B(j) > B(j + 1)
    final_location(j) = new_location(j);
else
    final_location(j) = new_location(j + 1);
end

我的错误只是说:

错误:文件:check_intensity.m行:1列:44 不平衡或意外的括号或括号。

coord_1_sb出错(第36行)        final_location = check_intensity(B(j),B(j + 1),new_location(j),new_location(j + 1));

1 个答案:

答案 0 :(得分:2)

这是因为您应该在该位置输入输入参数名称。所以check_intensity(B(j),B(j + 1),new_location(j),new_location(j + 1))基本上是正确的,当你调用函数&amp;不是在定义函数时。正确的方法是在定义函数时使用简单的变量名,如check_intensity(x,y,new_loc1,new_loc2)。 那应该可以解决你的问题。 因此,您的用户定义函数将如下所示

function final_location = check_intensity(x,y,new_loc1,new_loc2,j)
    if x > y
        final_location = new_loc1;
    else
        final_location = new_loc2;
    end