7

次のファイルを検討してください

var1 var2 variable3
1     2    3
11    22   33

数値をマトリックスにロードし、列のタイトルを次と同等の変数にロードしたいと思います。

variable_names = char('var1', 'var2', 'variable3');

名前と番号を 2 つのファイルに分割してもかまいませんが、matlab コード ファイルを準備してそれらを評価することはオプションではありません。

任意の数の変数 (列) が存在できることに注意してください。

4

3 に答える 3

9

次のような操作にはimportdataをお勧めします。

d = importdata('filename.txt');

戻り値は、「data」というメンバーに数値フィールドを持ち、「colheaders」というフィールドに列ヘッダーを持つ構造体です。

このような操作データをインポートするためのもう 1 つの便利なインターフェイスは、Statistics Toolbox で利用できる 'dataset' クラスです。

于 2008-11-05T00:01:43.247 に答える
3

ヘッダーが最初の行にある場合

A = dlmread(filename,delimString,2,1);

数値データを行列 A に読み込みます。

その後、使用できます

fid = fopen(filename)
headerString = fscanf(fid,'%s/n') % reads header data into a string
fclose(fid)

その後、 strtokを使用して、headerString をセル配列に分割できます。私が考えることができる1つのアプローチは、不明な数の列に対処することです

編集

fscanf 関数呼び出しを修正

于 2008-11-03T21:48:40.393 に答える
1

異なるフォーマット指定子で textscan を使用するだけです。

fid = fopen(filename,'r');
heading = textscan(fid,'%s %s %s',1);
fgetl(fid); %advance the file pointer one line
data = textscan(fid,'%n %n %n');%read the rest of the data
fclose(fid);

この場合、「見出し」は、各列見出しが内部にあるセルを含むセル配列になるため、それらを文字列のセル配列または必要なものに変更する必要があります。'data' は、読み取る各列の数値配列を含むセル配列になるため、それらをまとめて 1 つの行列を作成する必要があります。

于 2008-11-03T21:25:19.647 に答える