首页 > 解决方案 > 从 MATLAB 的嵌套 for 循环中调用函数

问题描述

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

标签: matlabfunction-calls

解决方案


那是因为您应该在该位置输入输入参数名称。所以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

推荐阅读