MATLAB Answers

read each line of a text file and storage each into an array

1 view (last 30 days)
carlos edurdo condori ochoa
Answered: Walter Roberson on 8 Sep 2020
Greetings, I want to read the lines of text that have the words that contain SPARMS and save their information in an array, for example the line "SPARMS_VBE.IND.FREQ:" and the following is stored in an array1 = [10e6 100e6 5e6 150e6 500e6 50e6 600e6 40e9 100e6], the same for "SPARMS_VBE.IND.VCE" in an array2 = [0] and so on, so that for each row variable there is a particular vector.
Then each **** block ***** is stored in a cell so that you can distinguish between one block and another. Since there are other blocks
I have little time to achieve it and I am not an expert in matlab, I was trying with textscan but I do not know how to read by rows, I was seeing maybe I could do it with the readcell command but I have matlab 2017 and readcell was implemented in 2019, so I would have to install matlab 2020 so you can use readcell. I'm not really sure though. Please if anyone knows how to achieve it I will be very grateful.

  0 Comments

Sign in to comment.

Answers (2)

Mohammad Sami
Mohammad Sami on 8 Sep 2020
The easiest way would be to read the entire file, then use string functions to extract what you need.
The following should would get you started.
fid = fopen('somefile.txt','r');
txt = fread(fid,'*char')';
txt = splitlines(txt);
astreisk = startsWith(txt,'****')
blockid = cumsum(astreisk); % assign block id to each row preceded by ****
% rest of your code. use startsWith to identify specific types rows
%

  0 Comments

Sign in to comment.


Walter Roberson
Walter Roberson on 8 Sep 2020
S = fileread('TEST.txt');
sparm_lines = regexp(S, '^\s?SPARMS_.*$', 'lineanchors', 'dotexceptnewline', 'match');
This would break each SPARMS line into its own cell. It would not, however, break into blocks.
I had a look at the file, and it is not clear to me that you want the blocks to be delimited by the *** lines. The lines that end in :: look to me to be more like block delimiters.

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!