loading file using uigetfile

9 views (last 30 days)
NUR KHAIRUNNISA rahimi
NUR KHAIRUNNISA rahimi on 20 Nov 2011
Moved: Voss on 16 Apr 2025
I wrote a few lines of codes to open a file containing a list of words, but it doesn't seem to open any file when I choose the file from the dialogue box. Can anybody tell what did I do wrong somewhere? I dont think the 'return' code was the problem because when i set it into comment, the error still existed.
[FILENAME, pathname] = uigetfile('*.wsb', 'rt');
if (isequal(FILENAME,0) || isequal(pathname,0))
disp('User pressed cancel');
else
disp(['User selected', fullfile(pathname, FILENAME)]);
end
fid = fopen(FILENAME,'rt');
if fid<0
%error could not find the file
return,
end
  3 Comments
sangeetha
sangeetha on 16 Apr 2025
Moved: Voss on 16 Apr 2025
error in this line
Walter Roberson
Walter Roberson on 16 Apr 2025
Moved: Voss on 16 Apr 2025
The first output from uigetfile is just the file name itself, without any directory information. If the file might not be in the current directory then you need something more like
[filename, pathname] = uigetfile('*.*','SELECT INPUT DATA');
S1 = load(fullfile(pathname, filename));
After that, the proper steps will depend upon the kind of file that was loaded. load() of an arbitrary file
  • might well fail, if the file is not one of a few very specific formats
  • might result in a numeric array
  • might result in a struct() with one field for each variable name loaded, if it was a .mat file
The cases that result in a numeric array are almost always better handled by readmatrix(). The cases that deal with .mat files need to reference the variable name that the data is stored in. The cases of a .mat file that has a single variable name stored in it can be handled with a small bit of code.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 20 Nov 2011
You need to fopen fullfile(pathname, FILENAME) rather than just FILENAME, except in the case where the chosen file just happens to be in the current directory.
I notice that you provide 'rt' as the second argument to uigetfile(). Does 'rt' happen to be what you want to prompt the user with? Not out of the question, of course, but that would be unusual: the 'rt' suggests confusion with the 'rt' argument that would need to be provided to the fopen() function [which you have done].
  7 Comments
Fangjun Jiang
Fangjun Jiang on 20 Nov 2011
uigetfile() just brings up a GUI for you to pick a file. Take a look at the help of uigetfile. [FILENAME, pathname] = uigetfile('*.wsb') is sufficient for you to choose from all the .wsb files. If you add the 'w+' as you did, the 'w+' would appear in the title bar in the GUI window that was brought up. It is meaningless and has nothing to do whether you want to write or read the file.
NUR KHAIRUNNISA rahimi
NUR KHAIRUNNISA rahimi on 20 Nov 2011
thank you, i think i got it now.

Sign in to comment.

More Answers (0)

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!