'fopen' function error when placed inside of user defined function
显示 更早的评论
I am currently doing a question which requires me to write a function that has a file as the function input. The functions task is simply to open any file required containing just numbers and display it as a matrix. As I understand it, I can do this using the fopen and fscanf functions. This works fine, however when I try implement it as a function, I run into an error. This is what I have, first without it being inside my user function, which works, and second with it being inside my user created function which does not:
%#1
fid = fopen('1.txt');
x = fscanf(fid, '%f\n', [13, inf]);
%#2
function x = fun(file_name)
fid = fopen(file_name);
x = fscanf(fid, '%d\n', [13, inf]);
#2 Returns the error:
Error using fscanf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fun (line 3)
x = fscanf(fid, '%f\n', [13, inf]);
I'm really not sure how to fix this and any help would be much appreciated. (also I have included and if statement for if the file cannot be found but with or without this I still get the above error)
2 个评论
Image Analyst
2015-9-19
Can you attach the text file, or at least the first few lines of it as a file with the paperclip icon?
Harry Carr
2015-9-19
采纳的回答
更多回答(1 个)
Image Analyst
2015-9-19
Try this more robust code for your function:
if exist(file_name)
fid = fopen(file_name, 'rt');
if fid ~= -1
x = fscanf(fid, '%d\n', [13, inf]);
fclose(fid);
else
message = sprintf('Unable to open file for reading:\n%s\nPerhaps it is locked by another process.', file_Name);
uiwait(warndlg(message));
end
else
message = sprintf('File not found:\n%s', file_Name);
uiwait(warndlg(message));
end
类别
在 帮助中心 和 File Exchange 中查找有关 Workspace Variables and MAT Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!