Если вы чувствуете себя авантюрным, вот векторизованное однострочное решение с использованием ACCUMARRAY (при условии, что вы уже прочитали файл в матричной переменной data
, как это показали другие):
NUM = 3;
result = accumarray(reshape(repmat(1:size(data,1)/NUM,NUM,1),[],1),data(:,3)) ...
./ (data(NUM:NUM:end,2)-data(1:NUM:end,2))
Обратите внимание, что здесь количество выборок NUM=3
является параметром и может быть заменено любым другим значением.
Кроме того, прочитав ваш комментарий выше, если количество выборок не кратно этому числу (3
), просто отбросьте оставшиеся образцы, выполнив это заранее:
data = data(1:fix(size(data,1)/NUM)*NUM,:);
Извините, вот намного проще: P
result = sum(reshape(data(:,3), NUM, []))' ./ (data(NUM:NUM:end,2)-data(1:NUM:end,2));