2

次のようなtxtファイルがいくつかあります。

Experiment ended at 5/8/12 10:00 AM
Number of Tunings 9
0 14.0 82 43.305 
1 34.142857142857146 95 23.432 
2 5.857142857142857 82 31.573 
3 37.42857142857143 83 22.387 
4 5.0 93 14.664 
...etc

最初の 2 行が無視され、区切り文字としてスペースに基づいて列が取得されるように、このデータをロードしたいので、上記は次のようになります。

0  14.0                82  43.305 
1  34.142857142857146  95  23.432 
2  5.857142857142857   82  31.573 
3  37.42857142857143   83  22.387 
4  5.0                 93  14.664 

関数importdata(FILENAME, DELIM, NHEADERLINES)は、まさにこれを行うと主張しています。ただし、この関数を呼び出すとimportfile('pathtofile', ' ', 2)、ファイル内のすべての文字を含む単一の文字列が取得されるため、次のようになります。

Experiment ended at 5/8/12 10:00 AM Number of Tunings 9 0 14.0 82 43.305 1 34.142857142857146 95 23.432 ...etc

importdata でデータを正しく解析するにはどうすればよいですか?

4

2 に答える 2

1

dlmread次のように使用することもできます。

dlmread('filename.txt', ' ', 2, 0)
于 2012-05-21T13:52:03.623 に答える
0

>> help importdata has the following note:

importdataがファイル拡張子を認識すると、関連するファイル形式をインポートするように設計されたMATLABヘルパー関数を呼び出します。それ以外の場合、importdataはファイルを区切られたASCIIファイルとして解釈します。

たぶん、.txtはimportdataをトリガーして、ファイルをテキストとしてロードします。しかし、私のバージョンのMATLABでは、importdataは.txtという名前のファイルのサンプルデータで正常に機能します。どのバージョンを使用していますか?

他のすべてが失敗した場合は、MATLAB内からcopyfileを使用して名前を変更できます

fname = 'sample.txt';
barename = regexprep(fname, '\.txt$', '');
copyfile(fname, barename);
importdata(barename, ' ', 2);
于 2012-05-21T13:29:59.570 に答える