How can I extract the last rows of specific columns of a text file
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Thorsten
le 21 Oct 2015
Modifié(e) : Thorsten
le 21 Oct 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 commentaires
Plus de réponses (1)
TastyPastry
le 19 Oct 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.
Voir également
Catégories
En savoir plus sur Text Files dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!