我怎样才能简化这个 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
结束
bins
是 Arr
的长度 - 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)).';
这会替换整个代码,而不仅仅是内循环。
我想知道是否有办法去掉内部的 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
结束
bins
是 Arr
的长度 - 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)).';
这会替换整个代码,而不仅仅是内循环。