SOM Алгоритм Matlab HELP - PullRequest
       12

SOM Алгоритм Matlab HELP

0 голосов
/ 19 апреля 2010

Я пытаюсь передать txt-файл в som_read_data из GUI ...... я создал функцию, которая берет txt-файл из GUI и затем передает его в som_read_data..но я получаю некоторые ошибки ... вот список некоторых ошибок ..... кто-нибудь с идеями?

??? Error using ==> ftell
Invalid file identifier.  Use fopen to generate a valid file identifier.

Error in ==> som_read_data at 169
  fpos1 = ftell(fid); c1 = 0;      % read first non-comment line

Error in ==> prog_som at 3
sD = som_read_data(m);

Ответы [ 3 ]

1 голос
/ 19 апреля 2010

Ошибка указывает, что либо вы не открыли файл первым, либо FOPEN не смог правильно открыть файл. Если значение возвращенного идентификатора файла равно -1 после вызова FOPEN , это означает, что произошла ошибка (например, попытка открыть несуществующий файл).

EDIT:

На основании вашего комментария вы неправильно строите путь к файлу. Вы должны создать B следующим образом:

B = [pathname,filename];  %# Append filename to the end of pathname
%# Or
B = fullfile(pathname,filename);  %# In case pathname doesn't have a file
                                  %#   separator (`\` or '/') on the end

У вас был обратный порядок (B = [filename,pathname];), который дал бы вам неверный путь к файлу и, следовательно, неверный идентификатор файла fid при попытке открыть файл с помощью FOPEN .

1 голос
/ 19 апреля 2010

Похоже, вы используете функцию som_read_data из SOMTOOLBOX . Функция предполагает получить имя файла данных в качестве аргумента. Но вы читаете файл с textread в переменную m и передаете его в Prog_som.m, который передает его в som_read_data. Я не знаю, делает ли Prog_som.m что-то с m-переменной. В любом случае попробуйте передать B вместо m:

[filename, pathname] = uigetfile( ...
B = fullfile(pathname,filename);
x = prog_som(B);

Также убедитесь, что ваш файл в формате SOM_PAK. Вы можете найти его описание в комментариях внутри som_read_data.m.

1 голос
/ 19 апреля 2010

Ошибка говорит о том, что ваш идентификатор файла может быть недействительным. Вы проверяли?

Вы получаете идентификатор файла (fid в вашей функции som_read_data), вызывая fid=fopen(fileName), где fileName - это имя вашего файла, если он находится в текущем каталоге, или имя файла, включая имя пути, в противном случае ,

Для отладки вы можете позвонить [fid,message] = fopen(fileName) и проверить, пусто ли message. Если это не так, при открытии файла произошла ошибка, и, следовательно, fid не является допустимым идентификатором файла.

РЕДАКТИРОВАТЬ Возможно, вы захотите взглянуть на то, что говорит message. Держу пари, что это что-то вроде «файл не найден», либо потому, что файл не указан по пути, либо потому что вы пропустили расширение.

EDIT2 Просмотрите som_read_data, чтобы найти, какая функция возвращает fid, прежде чем она будет использована в строке 169. Если в строке написано fid = fopen(m), то вы должны передать имя файла в som_read_data, т.е. ..е звоните som_read_data(B).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...