我怎样才能简化这个 MatLab 代码?

How can I simplify this MatLab code?

我想知道是否有办法去掉内部的 for 循环

for i = 1:size(VALUES)
    for k = 2:bins+1
        if VALUES(i) < Arr(k)
            answer_list(i) = find(Arr == Arr(k)) - 1;
            break
        end
    end
end

VALUES 是一个从 2 到 4 有 100 个双打的文件
Arr 是一个有 4 个值的数组,从 VALUES min 步长 1 到 VALUES max
结束 binsArr 的长度 - 1
answer_list 是一列数字 VALUES long,根据 bins 变量的大小保存离散值。

我认为这就是您要查找的内容(注释中是对代码中原始行的引用):

out = bsxfun(@lt,VALUES(:).',Arr(:)) % if VALUES(i) < Arr(k):
out2 = size(out,1)-cumsum(out,1); % find(Arr == Arr(k)) - 1;
answer_list = out2(end,any(out,1)).';

这会替换整个代码,而不仅仅是内循环。