В приведенном ниже примере текстового файла, если в столбце 3 содержится 1
, соответствующие данные столбца 2 должны быть объединены с данными предыдущей строки в столбце 2. Например, 40
в строке 2 следует добавьте к 10
в строке 1, затем в строке 2 должно быть установлено значение 0
(как показано в измененном текстовом файле примера). Проблема с моим кодом ниже состоит в том, что он записывает только изменения в текущих данных time(i,1)
, но не изменения, сделанные для предыдущих данных.
original.txt
a time c
1 10 0
2 40 1
3 20 0
4 11 0
5 40 1
modified.txt
a time c
1 50 0
2 0 0
3 20 0
4 51 0
5 0 0
fid=fopen('data.txt');
A=textscan(fid,'%f%f%f');
a =A{1};
time=A{2};
c =A{3};
fclose(fid);
fid=fopen('newData.txt','wt');
for i=1:size(a)
if c(i,1)==1
time(i-1,1)=time(i,1)+time(i-1,1); % merge the time of the current and the previous
time(i,1) =0; %set the time to 0
array = []; %empty the array
array = [a(i,1) time c(i,1)]; add new data
format short g;
fprintf(fid,'%g\t %g\t %g\n',array);
end
fclose(fid)