2016-06-30 8 views
0

を処理し、私は私の答えを見つけることができません。インポート多くの.txtファイルと多くの被験者が同じトピックを持っていても、彼らに

私は(異なる名前の)フォルダ内の30の.txtファイルのようなものを持って、私はMATLABでそれらのすべてを輸入したいと思います。各ファイルから列を取り出し、すべての列を含むベクトルを作成します。

Bombo30m1.txt
Bombo30m2.txt
Bovolon30m2.txt
Rigutti30m4.txt

各.txtファイルは、コンマで区切られた数の45列を有しています。 テキストファイル内の数字はすべて整数です。

すべてのファイルは、同じ列の数ではなく、行の同じ番号を(複数またはそれぞれ4000未満)を有します。ファイルのすべてのために

、私は列40を取り、それを1つのベクトルをしたいと思います。だから私は大きなベクトルを得るでしょう。

+0

[類似の名前や文字列を持つ100個のファイルをMATLABの1ステップで読み込むにはどうすればよいですか?](http://stackoverflow.com/questions/15366374/how-can-i-load-似たような名前のストーリーやストリングス・イン・マインの100ファイル – excaza

答えて

1

まず、すべてのファイル情報をstructを作成します。

dir('*.txt')はあなたのファイルに関するすべての情報を持つ構造体を提供します:

4x1 struct array with fields:  
    name 
    date 
    bytes 
    isdir 
    datenum 

は、あなたが配置します変数を定義最初の列の値

は、ファイルの数を取得するにはnumber_of_files = numel(filenames)を使用してください。 col_valuesは、値を格納するベクトルです。メモリを事前に割り当ててください。

Load the files

filenames(1).nameあなたの最初のファイル、 "Bombo30m1.txt" の名前を与えます。 すべてのファイルをループし、値を取得します。load(filenames(ii).name)

そして最後にcol_valuesで以前のものの後に新たな価値を置きます。それをすべてまとめると

filenames = dir('*.txt'); 
number_of_files = numel(filenames); 
col_values = []; 

for ii = 1:number_of_files 
    all_values = load(filenames(ii).name); 
    col_values = [col_values; all_values(:,1)]; 
end 

NOTEを!このコードには、最適化されていないコードがいくつか含まれています。これが何回も実行されるプロシージャであれば、それを少し書き直すべきです。 Relevant

関連する問題