0
你好我正在写函数来查找在几天的行动之间的最大差距。但我想简化循环,如果像Java中的Lambda一样。Matlab for循环和if语句简化
function [retObj] = find_gaps (data, n)
[~,n1] = size(data);
dates = 1;
gaps = 1;
for i = 1:n1
if i > 1
gap = data(i) - data(i-1);
dates(end+1) = data(i-1);
gaps(end+1) = gap;
end
end
dates(1) = [];
gaps(1) = [];
fprintf('Highest gaps:\n');
for i = 1:n
[val,key] = max(gaps);
fprintf('%s gap: %d\n',datestr(dates(key)), val);
gaps(key) = [];
dates(key) = [];
end
Oneliners是高估了。只是说。并不是说你的代码不能提高效率。 –
是的,也许问题应该是如何使此代码更有效。 – user3476593
关键词:预分配('日期'和'间隙'),冗余(从第一个循环中的“i = 2”开始循环,如果需要则不需要;“日期”和“数据”可能相同),向量化('gap = diff(data);'而不是循环)。 –