How to get specific rows in a text file and store it in a matrix?

1 view (last 30 days)
Hello everyone, I have a text file of consisting data. I want to pick up specific rows starting with (PL51) and store it in a matrix.
+Any kind of help would be appreciated.
+Data sample
+ Also, you can find text file in the attachment.
* 2021 5 16 0 0 0.00000000
PL51 3237.654801 -2943.534852 11471.056095 999999.999999
VL51 -50540.516761 -31697.794702 6392.165187 999999.999999
* 2021 5 16 0 2 0.00000000
PL51 2623.316843 -3313.921643 11529.952432 999999.999999
VL51 -51818.375773 -30014.173455 3421.719481 999999.999999
* 2021 5 16 0 4 0.00000000
PL51 1994.763046 -3663.432262 11553.143593 999999.999999
VL51 -52908.945184 -28219.874309 442.832755 999999.999999
* 2021 5 16 0 6 0.00000000
PL51 1354.271051 -3990.791260 11540.583352 999999.999999
VL51 -53807.318501 -26323.742841 -2535.319935 999999.999999
* 2021 5 16 0 8 0.00000000
PL51 704.172979 -4294.831581 11492.335440 999999.999999
VL51 -54509.324800 -24334.991911 -5503.591803 999999.999999
* 2021 5 16 0 10 0.00000000
PL51 46.846515 -4574.498718 11408.573045 999999.999999
VL51 -55011.543908 -22263.160221 -8452.890926 999999.999999
* 2021 5 16 0 12 0.00000000
PL51 -615.294186 -4828.854373 11289.578001 999999.999999
VL51 -55311.318759 -20118.070018 -11374.206387 999999.999999
* 2021 5 16 0 14 0.00000000
PL51 -1279.807708 -5057.079602 11135.739656 999999.999999
VL51 -55406.764955 -17909.784089 -14258.633917 999999.999999

Accepted Answer

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 5 Jun 2021
Edited: Sulaymon Eshkabilov on 5 Jun 2021
Here is a quick solution:
%% Set up the Import Options and import the data
opts = delimitedTextImportOptions("NumVariables", 7);
% Specify range and delimiter
opts.DataLines = [3, Inf];
opts.Delimiter = " ";
% Specify column names and types
opts.VariableNames = ["VarName1", "VarName2", "VarName3", "VarName4", "VarName5", "VarName6", "VarName7"];
opts.VariableTypes = ["categorical", "double", "double", "double", "double", "double", "double"];
% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
opts.ConsecutiveDelimitersRule = "join";
opts.LeadingDelimitersRule = "ignore";
% Specify variable properties
opts = setvaropts(opts, "VarName1", "EmptyFieldRule", "auto");
% Import the data
lageos1 = readtable("lageos1.txt", opts);
% Select and separate data
D=lageos1;
DS = D((lageos1(:,1).VarName1=='PL51'),:); % Selected data

More Answers (1)

dpb
dpb on 5 Jun 2021
One of about a zillion ways...deliberately illustrating some newer features...
opt=detectImportOptions('lageos1.txt','CommentStyle',{'*'},'FileType','fixedwidth');
opt.SelectedVariableNames=opt.SelectedVariableNames(2:end);
data=readmatrix('lageos1.txt',opt);
data=data(1:2:end,:);

Categories

Find more on Text Data Preparation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!