あなたimportfile()
機能を使用すると、最新のインポートされたファイルでa
を上書きしますすべてのforループの反復において、このように、正常に動作する場合。代わりに、すべてのファイル(行列)を結合する必要があります。
行列の連結は、行(水平連結)または列(垂直連結)によって行うことができます。私が理解しているように、あなたは単一のファイルが含んでいるように144の列と多くの行を持つユニークな行列を生成するために垂直連結を必要とします。
垂直連結は、このようA=[B ; C]
ような命令は、行列B
とC
を連結することによって、マトリックスA
を作成し、;
オペレータによって行うことができる
myMatrix=[];
for fileNum=1:8;
startRow=1;
endRow=72;
filename
myMatrix=[myMatrix ; importfile(filename, startRow, endRow)];
end
を次のようにこのように使用すると、ループを変更しなければなりません。あなたのケースでは、myMatrix
を空に初期化してから、ファイルであるimportfile()
のすべての出力を(反復的に)垂直方向に連結します。ループの終わりに
、myMatrix
はM
が144であるとN
は、すべてのファイル(8 * 72)全体の行数の合計ですサイズNxM
を持っている必要があります。
更新
あなたは、セルの各要素は、ファイル名である文字列のセル配列を作成することができますimportfile()
関数に明示的にファイル名を渡す必要がある場合。あなたは適切なファイル名で、細胞内の文字列を置換する必要があり、明らかに
filenames={'filename1.tsv','filename2.tsv',...,'filename8.tsv'};
と
myMatrix=[];
for fileNum=1:8;
startRow=1;
endRow=72;
myMatrix=[myMatrix ; importfile(filenames{i}, startRow, endRow)];
end
では、次のように最後に、あなたは少しループを編集することができます。したがって、我々の場合にはセル・アレイは、何かのようになりますこの方法では、ループの繰り返しごとにi番目のファイル名がimportfile()
の入力として与えられ、うまくいけばロードされます。これが機能するために
あなたが同じフォルダにMATLABスクリプトと明らかに機能importfile()
場所
- (のは、物事をシンプルにしましょう)すべきである
- あなた.TSVファイルを含むセットは、現在のフォルダとしてフォルダを言いました
を持っている場合。tsvファイルと別のフォルダ内のスクリプトを使用する場合は、現在のフォルダは必ずスクリプトを含むフォルダになり、セル配列内のファイル名はfilenames
に適切なファイル名だけでなくパス全体を含める必要があります。
ありがとうAlessiox。私はそれを理解することができませんでした。なぜなら、matlabのGUIを使用して生成されたimportfile関数では、ファイル名がfilenameという単語を使用して2004.07.01.0000.tsvというファイルを参照していました。私の元の質問に記載されているように8ファイル。再び私は新しいので、私の無知をしてください。 –
@RachidBrah答えを更新しました – Alessiox
ファイル名= {'filename1.tsv'、 'filename2.tsv'、...、 'filename8.tsv'}; 私はそれを私のimportfile関数に入れて、エラーメッセージを返しました。 Alessiox、私はmatlab GUIを使用して関数を生成したことを忘れてしまいました。少し時間がある場合は、私のオリジナルの投稿を読んで、問題を段階的にアプローチしてください。私の問題は、自分のスクリプトを自分の関数に接続するだけでなく、おそらく関数自体の内容にも接続しているということです。本当にありがとう!ところで、関数、スクリプトは現在のフォルダにあります –