loading file using uigetfile

조회 수: 9 (최근 30일)
NUR KHAIRUNNISA rahimi
NUR KHAIRUNNISA rahimi 2011년 11월 20일
이동: Voss 2025년 4월 16일
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
sangeetha
sangeetha 2025년 4월 16일
이동: Voss 2025년 4월 16일
error in this line
Walter Roberson
Walter Roberson 2025년 4월 16일
이동: Voss 2025년 4월 16일
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.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2011년 11월 20일
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
Fangjun Jiang
Fangjun Jiang 2011년 11월 20일
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 2011년 11월 20일
thank you, i think i got it now.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Large Files and Big Data에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by