1

20 列 (列は | で区切られています) と多くの行を持つテキスト ファイルがあります。列 5,9,17 のみを読み取るにはどうすればよいですか?

4

3 に答える 3

2

このようなファイルを読みたい場合 (私の例では text.txt と呼ばれます)

1 | 2 | 3 | 4
2 | 3 | 4 | 5
3 | 4 | 5 | 6

ただする

matrix = dlmread('text.txt');

あなたに与える

1     2     3     4
2     3     4     5
3     4     5     6

次に、標準の matlab 行列表記を使用して、たとえば列 1 と 4 を抽出できます。

col1 = matrix(:, 1) % the colon is used to tell matlab to take all rows
col4 = matrix(:, 4) 
于 2013-10-09T07:11:51.070 に答える
1

適切な入力パラメーターを使用すると、textscanはこれを実行できます。

Ncols = 20;
colExtract = [5 9 17];

fspec = cell(1,Ncols);
fspec(:)={'%*f '}; % the asterisk tells textscan to ignore the column
fspec(colExtract)={'%f '};
fspec{end}=fspec{end}(1:end-1); % removes the space from the last parameter
fspecstr = horzcat(fspec{:});

fid = fopen(filename);
    indata = textscan(fid,fspecstr,'HeaderLines',1,'delimiter','\t');
fclose(fid);

col5 = indata{1};
col9 = indata{2};
col17= indata{3};

ご覧のとおり、単一のヘッダー行があり、データはタブ区切りであると想定しました。アプリケーションにこれがない場合は、もちろん変更してください。

ごく一部しか必要としない巨大なファイルを操作している場合や、すべてのコンテンツをメモリに格納できない場合は、これで十分だと思います。

于 2013-10-09T07:16:53.240 に答える
1

テキスト ファイルのインポートによって形成された変数配列から特定の列を選択して、別の変数を形成する必要があります。

于 2013-10-09T06:48:43.253 に答える