how to load a txt data

8 views (last 30 days)
Niki
Niki on 3 Feb 2013
I cannot load following txt data into matlab, I have tried many functions,
BEGIN IONS
TITLE=445.1185_908.046
PEPMASS=445.1185
RTINSECONDS=908.046
CHARGE=1
355.074005126953 543
223.07470703125 59
150.026992797852 97
END IONS
I would like sort then this data as
TITLE PEPMASS RTINSECONDS CHARGE
445.118 445.118 908.046 1 355.0740 223.0747 150.0269
  1 Comment
Image Analyst
Image Analyst on 3 Feb 2013
Edited: Image Analyst on 3 Feb 2013
You didn't say what you want. For example, is Title a string? Or two floating point numbers separated by an underline? Is CHARGE = 1 or does it = [1, 355.074005126953, 543, 223.07470703125, 59, 150.026992797852, 97]? Or do you simply want a cell array of strings where each string is one line of the file? No one can give a complete answer unless they know things like that.

Sign in to comment.

Answers (3)

Azzi Abdelmalek
Azzi Abdelmalek on 3 Feb 2013
Edited: Azzi Abdelmalek on 3 Feb 2013
fid = fopen('file.txt');
line1 = fgetl(fid);
res=line1;
while ischar(line1)
line1 = fgetl(fid);
res =char(res,line1);
end
fclose(fid);
display(res)

Miroslav Balda
Miroslav Balda on 4 Feb 2013
Your code doesn't create or print data in the required format. The following code does it. The input data are in file IONS.txt:
% IONS.txt = comment
BEGIN IONS
TITLE=445.1185_908.046
PEPMASS=445.1185
RTINSECONDS=908.046
CHARGE=1
355.074005126953 543
223.07470703125 59
150.026992797852 97
END IONS
The following program creates the output that you required:
% IONSrw.m
%%%%%%%%%%%%%% 4.2.2013
clc
clear
% Function ffread.m is available from File Exchange
% www.mathworks.com/matlabcentral/fileexchange/9034
ffread('IONS.txt', '='); % file name
ffread(2,''); % skip 1st line
TI = ffread(2,'');
PE = ffread(2,'');
RT = ffread(2,'');
CH = ffread(2,'');
d = ffread(6,'');
ffread(2,''); % skip lastline
%
w = TI{2};
n = findstr(w,'_');
fprintf('%s %s %s %s\n', TI{1}, PE{1}, RT{1}, CH{1});
fprintf('%s %s %s %s %s %s %s\n', ...
w(1:n-1), PE{2}, RT{2}, CH{2}, d{1}, d{3}, d{5});
THe program uses function ffread.m for free format reading of text files of the known structure.
  2 Comments
Miroslav Balda
Miroslav Balda on 5 Feb 2013
You have to ask properly, otherwise you get an answer not fulfilling your wishes.

Sign in to comment.


Miroslav Balda
Miroslav Balda on 5 Feb 2013
The general program for processing files of presented structure follows:
% IONS.m Answers: Mohamad, 3.2.2013, 12:14, Tags: load txt data
%%%%%%%%%%%%%% 4.2.2013
% Reads txt files using ffread.m for free format input
clc
clear
% Function ffread.m is available from File Exchange
% www.mathworks.com/matlabcentral/fileexchange/9034
% Function inp.m is available from File Exchange
% www.mathworks.com/matlabcentral/fileexchange/9033
file = inp('File name','IONS.txt','%s',5);
fprintf(' Processing of the file %s\n\n', file);
ffread(file, '='); % file name
while 1 % CYCLE OF LINES
w = ffread(1,''); % skip 'BEGIN'
if w==127, break,end % the end of data
ffread(1,''); % skip 'IONS'
TI = ffread(2,'');
n = findstr(TI{2},'_'); % position of char '_'
PE = ffread(2,'');
RT = ffread(2,'');
CH = ffread(2,'');
fprintf('%s %s %s %s\n', TI{1}, PE{1}, RT{1}, CH{1});
w = RT{2};
w = [w repmat(' ',1,7-length(w))];
fprintf('%s %s %s %s ', TI{2}(1:n-1), PE{2}, w, CH{2})
while 1
d = ffread(2,''); % read one line
if double(d{1}(1))<58 % digit character
fprintf(' %s', d{1});
else
fprintf('\n'); % skip line with 'END IONS'
break
end
end
end
The processing of the file from the Comment 3 yielded the following output:
File name = IONS.txt => IONS2.txt
Processing of the file IONS2.txt
TITLE PEPMASS RTINSECONDS CHARGE 445.1185 445.1185 908.046 1 355.074005126953 223.07470703125 150.026992797852 TITLE PEPMASS RTINSECONDS CHARGE 610.1826 610.1826 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 536.1563 536.1563 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 519.1368 519.1368 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 446.1154 446.1154 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 355.0693 355.0693 933.396 1 281.057800292969 269.013793945313 TITLE PEPMASS RTINSECONDS CHARGE 429.0904 429.0904 939.756 1 361.027008056641 372.740997314453 148.073593139648 324.981506347656 327.983703613281 TITLE PEPMASS RTINSECONDS CHARGE 536.1701 536.1701 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 519.1362 519.1362 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 446.1246 446.1246 956.694 1 283.046813964844 416.035797119141 147.065902709961 356.092590332031 400.990814208984 TITLE PEPMASS RTINSECONDS CHARGE 372.1053 372.1053 959.136 1 283.046813964844 147.065902709961 356.092590332031 343.017700195313 325.000305175781 294.950592041016 299.058197021484 223.085906982422 359.019104003906 326.973602294922 223.974197387695 268.014495849609 TITLE PEPMASS RTINSECONDS CHARGE 504.1139 504.1139 -1 1 TITLE PEPMASS RTINSECONDS CHARGE 391.2884 391.2884 -1 1
It is necessary to mention that the lines with many long numbers are here formated in such a way that lines are broken on new line(s).
  5 Comments
Miroslav Balda
Miroslav Balda on 10 Feb 2013
You have to name your data by any name (or use the names the files already have). Then run the file IONS.m and instead of the name IONS.txt offered by the program, you enter from a keyboard the name of the file you wish to process.
Have you the data in the named file? Use the full name of the file as an answer to the offer
File name = IONS.txt => % here insert the full name of your data file
It is all. I am unable to help you more. If you don't get any result, ask somebody in the vicinity to help you to enter the name of your file. Good luck!

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!