안녕하십니까. 일 사이에 가장 큰 간격을 찾기 위해 함수를 작성하고 있습니다. 하지만 루프를 단순화하고 자바에서 람다 (Lambda)와 같은 하나의 라이너 (liner)를 만들고 싶습니다.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
키워드 : 사전 할당 ('dates'와'gaps'), 중복 (첫 번째 루프에서'i = 2 '의 루프, 필요하다면'no ','dates '와'data '가 같을 수 있음), 벡터화 ('gaps = diff (data);'대신에). –