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