【问题标题】:Calling function from within nested for loop in MATLAB从 MATLAB 的嵌套 for 循环中调用函数
【发布时间】:2018-06-01 20:02:11
【问题描述】:

我在嵌套的 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));

【问题讨论】:

    标签: matlab function-calls


    【解决方案1】:

    这是因为您应该在该位置输入输入参数名称。所以check_intensity(B(j),B(j + 1),new_location(j),new_location(j + 1)) 在你调用函数时基本上是正确的,而不是在定义函数时。正确的方法是在定义函数时使用简单的变量名,例如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
    

    【讨论】:

    • 对不起,我错过了。然后定义将是function final_location = check_intensity(x,y,new_loc1,new_loc2,j),同样,函数调用也会改变。
    猜你喜欢
    • 2014-06-10
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多