MATLAB min(数组)给出的索引超出数组维度

pho*_*ton 0 arrays indexing matlab

我试图找到两个变量的函数的最小值,然后找到变量的值.

我的方法是通过几个变量值迭代函数,然后使用min函数找到最低值.

minval = -10;
maxval = 10;
n = 1;

for x = minval:maxval
    for y = minval:maxval
        f(n) = abs(x-1)+abs(y-1)+abs(x-3)+abs(y-5)+abs(x-8)+abs(y-3);
        n=n+1;
    end
end
f(n) = abs(x-1)+abs(y-1)+abs(x-3)+abs(y-5)+abs(x-8)+abs(y-3);
fmin = min(f)
Run Code Online (Sandbox Code Playgroud)

问题出在最后一行:

fmin = min(f)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

??? Index exceeds matrix dimensions.

Error in ==> Lab2 at 65
fmin = min(f)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?任何帮助是极大的赞赏.

小智 6

不要定义名为min的变量.试试这个:

which min
Run Code Online (Sandbox Code Playgroud)

它告诉你什么?

请注意,通过创建具有相同名称的变量,可以重载MATLAB中的函数.执行此操作时,将阻止MATLAB访问该函数.这是一个好主意,所以不要这样做.解决方案是

clear min
Run Code Online (Sandbox Code Playgroud)

因此,您将删除已创建的变量.当然,如果该变量中有重要的东西,首先将它放在其他地方.