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
S1=load(uigetfile('*.*','SELECT INPUT DATA'));
S=fft(S1);
sangeetha
sangeetha on 16 Apr 2025
Moved: Voss on 16 Apr 2025
error in this line
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

actually i just changed it to 'w+' and the file kind of runs. but it did not run through the loop that I have made on the next part of this code though. SO I am not sure if the file actually opened up or not..
'w+' would be for writing in binary mode, and would erase any previous file contents. 'rt' would be for reading in text mode. Considering your "error could not find the file" comment, it sounds like you are planning to read rather than write ?
I am confused about this line in uigetfile('.wsb','w+')
what would be the right thing to replaced the "w+" in this line of code?
[FILENAME, pathname] = uigetfile('*.wsb', 'w+');
if (isequal(FILENAME,0) || isequal(pathname,0))
disp('User pressed cancel');
else
disp(['User selected', fullfile(pathname, FILENAME)]);
end
fid = fopen(FILENAME,'w+');
if fid<0
%error could not find the file
return,
end
im not sure what do you mean by
"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."
how do correct my code then?I bluntly took the way of writing this code from the help window
It is more like reading the file, where the file would be a textfile containing thousands of words and then do some changes to it such as sorting the words in the file and delete some of the unnecessary words that might be duplicates etc..
If w+ is not correct, what should I use to correct the code then?
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.
thank you, i think i got it now.

Sign in to comment.

More Answers (0)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!