How can i edit data in multiple text files?

I have hundreds of .txt files of data, and i need to order that data, and save only the top and bottom 10% of it to the same .txt file.
I've looked arround and tryed some things out but with no luck so far.
This is what i have.
clear all
close all
clc
Folder = 'C:\Users\Bruno\Desktop\teste123';
FilePattern = fullfile(Folder, '*.txt');
TheFiles = dir(FilePattern);
for k = 1 : length(TheFiles)
BaseFileName = TheFiles(k).name;
FullFileName = fullfile(TheFiles(k).folder, BaseFileName);
Data = readmatrix(BaseFileName);
SortedData = sortrows (Data,-5);
RowsToDelete = [11:83];
SortedData(RowsToDelete,:) = [];
HighCorr = SortedData(1:10,:);
LowCorr = SortedData(11:20,:);
end
With this script, matlab only gives me the top and bottom 10% (named HighCorr and LowCorr) of the first file.
I need to save this in the respective .txt file, and do the same with the rest of my folder.
Can someone help please?

11 comentarios

Jorg Woehl
Jorg Woehl el 24 de Mzo. de 2021
Hi Bruno, I noticed that you use BaseFileName instead of FullFileName in the call to readmatrix.
Otherwise, would it be possible to provide some sample files for testing?
Bruno Carvalho
Bruno Carvalho el 24 de Mzo. de 2021
Thanks for taking the time to help me.
I'm using these 5 .txt files as a test drive.
Also, i switched to FullFileName but there were no visible changes in the output
Jan
Jan el 24 de Mzo. de 2021
What does "with no luck so far" mean? We see the code. But what is the problem?
Bruno Carvalho
Bruno Carvalho el 24 de Mzo. de 2021
It means i dont know how to do what is asked of me.
I'm looking arround trying to find answers, on what to write on the code to basicly edit the .txt files in matlab.
I need to get the data from the .txt, order it, from the bigger to smaller numbers, and delete everything thats not the top and bottom 10%. I can do that with 1 .txt file, but im trying to learn how to do it on multiple files. "With no luck so far"
Jan
Jan el 24 de Mzo. de 2021
The code you have posted does this on all files inside a folder already. Therefore I do not understand, what you are asking for. Currently the code does not do anything with the results, but overwrites them in the next iteration. Is this your problem?
Bruno Carvalho
Bruno Carvalho el 24 de Mzo. de 2021
Yes, i think so. Do you have any sugestion?
Jan
Jan el 24 de Mzo. de 2021
Suggestion for what? Do you want to collect the data in an array, or to modify the files?
Bruno Carvalho
Bruno Carvalho el 24 de Mzo. de 2021
I want to modify the files
What about:
SortedData = sortrows (Data, -5);
n = size(SortedData, 1);
Data = SortedData([1:10, 84:s], :);
writematrix(FullFileName, Data);
Bruno Carvalho
Bruno Carvalho el 24 de Mzo. de 2021
Yes, thats perfect. Thank you very much.
Jan
Jan el 24 de Mzo. de 2021
Then I will repost it as an answer.

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 24 de Mzo. de 2021
SortedData = sortrows (Data, -5);
n = size(SortedData, 1);
Data = SortedData([1:10, 84:s], :);
writematrix(FullFileName, Data);

Más respuestas (0)

Categorías

Más información sobre Variables en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 23 de Mzo. de 2021

Comentada:

Jan
el 24 de Mzo. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by