How can I extract the last rows of specific columns of a text file

6 Ansichten (letzte 30 Tage)
ND
ND am 19 Okt. 2015
Bearbeitet: ND am 25 Okt. 2015
Please, I have a text file contains three columns I need to extract the last rows of the third and forth columns only and write them into a text file. for example, from the text file attached the result needs to be written in a text file. it should return:
1.87 36
157 35
1.88 37
1.36 48
1.73 78
1.99 100
Many thanks
  2 Kommentare
ND
ND am 19 Okt. 2015
Bearbeitet: ND am 19 Okt. 2015
Sorry this is the file, Thanks

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Thorsten
Thorsten am 21 Okt. 2015
Bearbeitet: Thorsten am 21 Okt. 2015
Read the data from file, ignoring 1 header line:
data = cell2mat(textscan(fopen('a.txt'), '%f%f%f', 'headerlines', 1));
Find the last position for each sequence in column 2. The last position is the position where the data changes, i.e., where the difference is > 0. Add 1 to the end get the last position for the last sequence:
idx = find([diff(data(:,2)); 1] > 0);
Now we have the position of the last entry of each sequence in ind. Since we want the last n elements of a sequence, we use the entry x minus n+1, so x -2 in case of n = 3. For the i'th sequence, we want to extract data(ind(i)-2:ind(i), 3). Instead of using a for-loop, we use arrayfun to work on the ind array:
d3 = arrayfun(@(x) (data(x-2:x,3)), idx, 'UniformOutput', false);
The final step is to write the numbers to a file:
dlmwrite('b.txt', d3)
  2 Kommentare
ND
ND am 21 Okt. 2015
Bearbeitet: ND am 21 Okt. 2015
Many thanks Thorsten Sorry, what about if I do not have headers ,( just data)?
Thorsten
Thorsten am 21 Okt. 2015
Just don't skip the ", 'headerlines', 1" part.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

TastyPastry
TastyPastry am 19 Okt. 2015
Open the file
fid = fopen('your file name.txt');
Skip the header
fgetl(fid);
Use textscan()
myOutput = textscan(fid,'%d %d %d');
It will return a cell array containing all the numerical data, just ignore the first two columns.
  1 Kommentar
ND
ND am 20 Okt. 2015
Bearbeitet: ND am 21 Okt. 2015
Sorry that is not what I need. For example, a text file has the following:
Bar No increment No Variable
1 1 0
2 1 3
1 2 4
2 2 5
1 2 6
2 2 9
I need to extract just the last variable values(column 3) of each increment
Returns one column written in a text file as :
0
3
6
9

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by