1

GUI から txt ファイルを som_read_data に渡そうとしています...GUI から txt ファイルを取得して 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);
4

3 に答える 3

2

SOMTOOLBOXの som_read_data関数を使用しているようです。この関数は、データ ファイル名を引数として取得することを想定しています。しかし、textread を含むファイルを m 変数に読み込み、それを Prog_som.m に渡します。Prog_som.m はそれを som_read_data に渡します。Prog_som.m が m 変数で何かを行うかどうかはわかりません。とにかく、m の代わりに B を渡してみてください:

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

また、ファイルが SOM_PAK 形式であることを確認してください。その説明は、som_read_data.m 内のコメントにあります。

于 2010-04-19T16:17:30.707 に答える
2

このエラーは、ファイル識別子が無効である可能性があることを示しています。チェックしましたか?

を呼び出すことにより、ファイル識別子 (fid関数内) を取得します。ここで、現在のディレクトリにある場合はファイルの名前、それ以外の場合はパス名を含むファイル名です。som_read_datafid=fopen(fileName)fileName

デバッグするには、 を呼び出してが空[fid,message] = fopen(fileName)かどうかを確認することができます。messageそうでない場合は、ファイルを開くときにエラーが発生したfidため、有効なファイル識別子ではありません。

EDITあなたは言うことを見たいと思うかもしれませんmessage。ファイルがパス上にないか、拡張子が見つからないため、「ファイルが見つかりません」のようなものだと思います。

EDIT2 som_read_dataを調べてfid、169 行目で使用される前にどの関数が返されているfid = fopen(m)かを確認しsom_read_dataますsom_read_data(B)

于 2010-04-19T15:05:10.403 に答える
2

このエラーは、ファイルを最初に開いていないか、FOPENでファイルを正しく開くことができなかったことを示しています。返されたファイル識別子の値がFOPEN-1の呼び出しの後である場合は、エラーが発生したことを示します (存在しないファイルを開こうとしたなど)。

編集:

コメントに基づいて、ファイルへのパスを間違って構築しています。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

FOPENでファイルを開こうとするとB = [filename,pathname];、無効なファイル パスと無効なファイル識別子が返されますfid

于 2010-04-19T15:05:36.613 に答える