MATLAB Answers

0

Read dada from a file

Asked by dan oltean on 19 Jul 2019
Latest activity Edited by Adam Danz
on 20 Jul 2019
So, I have an input text file(.txt) looking something like this: X:0.34, y:0.45, z:0.32, t:0.002
How can I read each variable separately like a column for x, one for y... and store them into matlab?

  7 Comments

dan oltean on 20 Jul 2019
Sorry for the inconvenient. I attached the text here. Thank you
X:0.0511,Y:3.1803,Z:7.7935,Ts:0.0> X:-0.0519,Y:3.2234,Z:7.602,Ts:0.005004883> X:-0.2841,Y:3.2641,Z:7.5804,Ts:0.009979248> X:-0.6074,Y:3.3622,Z:7.7911,Ts:0.014953614> X:-0.8085,Y:3.458,Z:8.1622,Ts:0.019927979>
Adam Danz
on 20 Jul 2019
We can work with that! In the image you shared earlier, each set of x:... Y:... Z:... Ts:... has it's own row. But in the text you shared above, it looks like there can be multiple X,Y,Z,Ts per line. In fact, there are no line breaks in the text you shared so all of that is on 1 line. These details are important to set straight before designing a solution.
Tudor Oltean on 20 Jul 2019
Each X,Y,Z,Ts has it's own row.
thank you

Sign in to comment.

1 Answer

Adam Danz
Answer by Adam Danz
on 20 Jul 2019
 Accepted Answer

Attached is the text file you described named xyz.txt.
% Read in the file
t = fileread('xyz.txt');
% Split text where '>' marks end of each row
ts = strsplit(t,'>');
% Extract X value
[Xc,~] = regexp(ts,'X:(.*),Y','tokens','match');
% Extract Y value
[Yc,~] = regexp(ts,'Y:(.*),Z','tokens','match');
% Extract Z value
[Zc,~] = regexp(ts,'Z:(.*),Ts','tokens','match');
% Extract Ts value
[Tsc,~] = regexp(ts,'Ts:(.*)$','tokens','match');
% Create table
T = table(str2double(cellfun(@(x)x{:},[Xc{:}],'UniformOutput',false))', ...
str2double(cellfun(@(x)x{:},[Yc{:}],'UniformOutput',false))', ...
str2double(cellfun(@(x)x{:},[Zc{:}],'UniformOutput',false))', ...
str2double(cellfun(@(x)x{:},[Tsc{:}],'UniformOutput',false))', ...
'VariableNames', {'X','Y','Z','Ts'});
Result
T =
5×4 table
X Y Z Ts
_______ ______ ______ _________
0.0511 3.1803 7.7935 0
-0.0519 3.2234 7.602 0.0050049
-0.2841 3.2641 7.5804 0.0099792
-0.6074 3.3622 7.7911 0.014954
-0.8085 3.458 8.1622 0.019928

  2 Comments

Tudor Oltean on 20 Jul 2019
Thank you very much!!! You saved me
Have a good day! :)
Adam Danz
on 20 Jul 2019
Glad I could help!

Sign in to comment.