如果有人可以向我解释我如何使用这段代码在 Scilab 中不断收到错误 21?

If anyone could explain to me how I keep getting error 21 in Scilab using this code?

如标题所说,我的总数组不会添加从我的任何距离数组中获取的任何值,只会 return 1。我的总数组也不会识别任何 i 值并且看起来完全忽略它。

如有任何帮助,请给我建议。

perms_x = perms(x)
perms_y = perms(y)
lngth = length(x)
fctrl = factorial(lngth)
total = zeros(fctrl)                       //initializes a zero array using factorial as the number of elements
for i=1:fctrl                                 //loop that goes from 1 to factorial value
    for k=1:lngth               //loops from the start of the array until the length
        distance(k) = sqrt((perms_x(i,k)-perms_x(i, k+1))^2 + (perms_y(i, k+1)-perms_y(i, k+1))^2);
        total(i) = distance(k) + sum(i);
    end
   //adds the value of city 1 to 0
   distance_1(i) = sqrt(perms_x(i,1)^2+perms_y(i,1)^2);
   //adds the value of city n to 0
   distance_n(i) = sqrt(perms_x(i,lngth)^2+perms_y(i,lngth)^2);
   //adds both values of city 1 and city n to the current sum
   total(i) = total(i) + distance_1(i) + distance_n(i);
end
disp (total)
g=min(total)

查看 perms 的手册页表明 perms_x 和 perms_y 的大小为 lngth!-by-lngth。但是由于你的内部循环从 1lngth,当你提取 lngth+1 列时,Scilab 引发了越界错误。

内循环应该是

for k=1:lngth-1