4

次のような形式のテキスト ファイルを MATLAB で読み込もうとしています。行全体を文字列として読み取ろうとしています。

 2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189

私はいくつかのことを試しました。

textscan(fid, '%s')行を読み取りますが、行をスペースでセルに分割します。

fscanf(fid, '%s')行を文字列として読み取りますが、すべてのスペースを削除します。

4

5 に答える 5

8

fgetl(fid)あなたが探していることをします。改行は削除されます。

于 2012-06-01T18:33:56.377 に答える
2

textscanデフォルトで空白区切りを使用します。区切り文字を空の文字列に設定します。

>> q = textscan(fid, '%s', 'Delimiter', '');
>> q{1}{:}
ans = 2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189
于 2012-06-01T18:24:33.847 に答える
2

ファイル全体を文字列として読み取りたい場合(ファイルが 1 行しかない場合)、次を試してください。

s = fileread('input.txt');   %# returns a char vector
s = strtrim(s);              %# trim whitespaces

FILEREAD 関数のソース コードを見ると、基本的にバイナリ モードでファイルを文字の配列として読み取っています。fread(fid, '*char')

于 2012-06-02T05:46:29.280 に答える
0

textscan では、空白はデフォルトで区切り文字として扱われます。呼び出すときに別の区切り文字 (データには存在しない) を指定します。これでうまくいくはずです。この fe を追加します。

    'delimiter', '|'

あなたも使うことができます

    file = textread(<fileref goes here>, '%s', 'delimiter', '\n')

それから

    file{1,1}

戻ります

    ans =

    2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189

お役に立てれば

于 2012-06-01T18:24:21.187 に答える
0

使用する:

clc;
fid = fopen('fileName.m');

while ischar(tline)
    disp(strcat("Line imported: ",tline))
    tline = fgetl(fid);
end

fclose(fid);
于 2016-05-26T20:19:11.537 に答える