MATLAB Answers

Problem with textscan for importng textfile

5 views (last 30 days)
Rica
Rica on 18 Apr 2017
Commented: Rica on 19 Apr 2017
Hi, i many text files named Data. I attached as exemple one file to schow the structure of it. I wrote a function to read the Data of these files.
function [All]=myfunction(numoffiles)
for k=1:numoffiles
fid=fopen(['Data_' num2str(k) '.txt']);
if fid == -1, error('Cannot open file'),
end
XX{k,1}=textscan(fid,'%f %f %f');
fclose(fid)
Amplitude{k,1}=XX{k,1}{1};
Resonance{k,1}=XX{k,1}{2};
Height{k,1}=XX{k,1}{3};
end
All.Amplitude=vertcat( Amplitude{:});
All.Resonance=vertcat(Resonance{:});
All.Height=vertcat(Height{:});
end
when i run this function with matlab 2014, i does what it should. But with Matlab 2017 i get Pronblems. Could someone help to solve the matter. mybe there is an easier way to sove it.
  2 Comments
Stephen
Stephen on 18 Apr 2017
dlmread might be a better choice for reading this file.

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 18 Apr 2017
I only had one file so I used a loop to read it twice to test the code.
This works in R2017a:
All.Amplitude = [];
All.Resonance = [];
All.Height = [];
for k1 = 1:2
fidi = fopen('Rica Data_2.txt','rt');
XXc = textscan(fidi, '%f%f%f', 'CollectOutput',1);
fclose(fidi);
XX = cell2mat(XXc);
Amplitude = XX(:,1);
Resonance = XX(:,2);
Height = XX(:,3);
All.Amplitude = [All.Amplitude; Amplitude];
All.Resonance = [All.Resonance; Resonance];
All.Height = [All.Height; Height];
end
  1 Comment
Rica
Rica on 19 Apr 2017
Thank you for you answer. That is what am looking for. it does function with the data_2.txt which i attached. But when i use it for the real Data_2(large data) it does not work as i expect. I attached the Data_2.txt. thank you

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by