MATLAB: Am I getting an ‘Unable to open file.’ error with importdata

errorimportdataMATLAB

Hi,
Patience is requested for the simple question, I haven't used Matlab since undergrad times.
I need to understand how to avoid an error with 'importdata'. Using 'importdata' or 'csvread' I get 'Unable to open file' errors, even when I can see the file being read if I caption 'importdata' with 'eval'.
I tested it with debugger and the filename is resolving correctly. When I use the filename as a string, it works ok. When I use uiimport it works also. Obviously these solutions won't be practical for many repetitions (numreps is in the order of 100s).
Looking at the variable workspace I can see that 'newfile' is actually populated with the correct data.
I am running MATLAB R2011b on OSX 10.8.
for n = 0:numreps
fle = strcat('batchRun', num2str(n,'%03d'), '_crt.csv');
%newfile = importdata(fle);
%newfile = importdata('batchRun000_crt.csv')
eval('newfile = importdata(fle)');
end;
Thanks in Advance,

Best Answer

In your posted code, thet variable newfile is overwritten in each iteration. Are you sure that all files are existing?
newFile = cell(1, numreps + 1);
for n = 0:numreps
fle = sprintf('batchRun%03d_crt.cvs', n);
try
newFile{n + 1} = importdata(fle);
catch
fprintf('Cannot read: %s\n', fle);
disp(exist(fullfile(cd, fle)))
end
end
[EDITED] Avoiding errors is better than catching them, so I'd prefer:
folder = cd;
newFile = cell(1, numreps + 1);
for n = 0:numreps
fle = fullfile(folder, sprintf('batchRun%03d_crt.cvs', n));
if exist(fle, 'file') == 2
newFile{n + 1} = importdata(fle);
else
fprintf('Skip missing file: %s\n', fle);
end
end