Batch process text files

16 views (last 30 days)
alia on 6 Feb 2015
Commented: alia on 8 Feb 2015
I am trying to save series of cells in a loop. I need to batch process text files having a 10 lines of both numbers and characters ( 12 12 34 54 rr). I am trying to save them in cell array so that i can access them later. The code I have written is giving error :
error : Error using textscan Invalid file identifier. Use fopen to generate a valid file identifier.
This code is working perfectly without the loop. Please help I am new to matlab. Is there any other better method of saving the files.
My code :
input_directory = 'd2/';
filelabels = dir([input_directory '*.txt']);
wav_label1 = cell(12,12);
wav_label2 = cell(12,12);
for i = 1: numel(filelabels)
fileName = filelabels(i).name;
fid = fopen(fileName);
results{i}= textscan(fid,'%f %f %f ........
%testscan is giving output as a cell{{1,1}{1,2}} as I have numbers
%and characters both in text file
wav_label1{i} = results{1,1};
wav_label2{i} = results{1,2};
Guillaume on 6 Feb 2015
Edited: Guillaume on 6 Feb 2015
Or better, use the formatting facility of error:
if fid<0
error('FOPEN: %s while opening ''%s''', msg, fileName);
With any code that deals with entities external to your program (user input, file system, database, etc.), always be prepared to deal with unexpected failure.

Sign in to comment.

Accepted Answer

Udit Gupta
Udit Gupta on 6 Feb 2015
You can use -
fileName = [input_directory filelabels(i).name];
That should solve the issue.
alia on 8 Feb 2015
The code works now. Thanks a lot. You correctly pointed my mistake. Thanks a ton :)

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 6 Feb 2015
I would say the most likely reason is that you do not have a subdirectory of the current working directory called "d2". You can use mkdir() to create it.


Find more on Data Import and Export 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!

Translated by