4

次のように.mファイルのすべての行を読み取ろうとしています

file_content = textscan(fid, '%s', 'delimiter', '\n', 'whitespace', '')

しかし、これは単に戻ります

file_content = 

    {0x1 cell}

実際に私のファイルには224行あります。だから私が使うなら

file_content = textscan(fid,'%s',224,'delimiter','\n')

私はすべての行を取得します

file_content = 

    {224x1 cell}

.m ファイル内のすべてのデータ (主に文字列) を読み取るより適切な方法は何ですか? ありがとう

4

3 に答える 3

3

あなたはあなたのニーズをリストしていないので(あなたは巨大なファイルを読んでいますか?多くの小さなファイルを読んでいますか?速度が問題ですか?あなたは本当に何をしたいですか?)私はあなたに可能な限り簡単な答えを与えています:

これをして:

f = fopen('data.txt');             
g = textscan(f,'%s','delimiter','\n');
fclose(f);

読み終えたら閉じることを忘れないでください。そうしないと、再び読むことができなくなります。

最初の行は g{1}{1}、2 番目の行は g{1}{2} などで取得できます。

これは、より多くの詳細を提供するtextscanの matlab ドキュメントです。

于 2012-12-12T19:31:00.250 に答える
3

これが私のために働いた方法です:

fid = fopen('filename','r'); %opening in read mode (default)
inter = textscan(fid,'%[^\n]'); 
lines = inter{1,1};
fclose(fid);

このコマンドは、ファイル全体を「1 行ずつ」読み取ります。たとえば、1332 行のテキスト ファイルがあり、このコードは である変数と である変数を作成inter します。{1,1 cell}lines[1x102944 char]

これがなぜ/どのように機能するのかはわかりません(これを読んでいる他の誰かが方法を知っていれば素晴らしいでしょう!)が、私のプログラムでは機能します。

于 2013-09-30T21:15:49.920 に答える