Why am I getting an 'Unable to open file.' error with importdata?
4 views (last 30 days)
Show older comments
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,
Accepted Answer
Jan
on 7 Nov 2012
Edited: Jan
on 8 Nov 2012
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
3 Comments
Jan
on 8 Nov 2012
@Angus: You cannot cheat Matlab to import a file inspite of an error using eval().
More Answers (1)
See Also
Categories
Find more on Scope Variables and Generate Names in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!