0

私は、MATLABで使用するためにASCII拡張子に変換する必要がある120を超える.txtファイル(すべてs1.txt、s2.txt、...、s120.txtのような名前)を持っています。

my .txt (comma , delimited .txt) files look like the following:
20080102,43.0300,3,9.493,569.567,34174.027,34174027
20080102,43.0600,3,9.498,569.897,34193.801,34193801

MATLABでは、次のようなコードを使用したいと思います。

for i = svec; 
   %# where svec = [1 2 13 15] some random number between 1 and 120. 
   eval(['load %mydirectory', eval(['s',int2str(i)]),'.ascii']);
end;

間違えなければ、上記のコマンドを.txtファイルで使用できないため、ASCIIファイルを使用する必要があります。

変換するファイルがたくさんあり、サイズが大きいので、MATLABを介してすべてのファイルを変換する簡単な方法はありますか、それともWeb上でMac用の優れた変換ソフトウェアがありますか?上記のコードを使用するよりも良い提案がありますか?

4

3 に答える 3

1

サンプルファイルを見せてもらえますか?loadすべてのテキストファイルがコマンドに有効であるとは限りません。ファイルが有効な形式でない場合、ファイル名の拡張子部分をから.txtに変更.asciiしてもまったく役に立ちません。代わりに、その場合、データはコマンドの有効な形式に変換されるかload、あるいは、他の手段によってMATLABにロードされる必要があります。fscanfまたはを使用してxlsread。これを解決するには、両方の方法でファイル構造が必要です。

空白のファイルをロードするmatlabのloadコマンドも参照してください。

于 2012-06-10T10:10:53.647 に答える
1

nrzの回答に追加:

正確に何をしたいかはわかりませんが、MATLABでテキスト(ASCII)またはバイナリモードの両方で任意のファイルを開くことができることは知っています。後者は、を使用して実現できますfread

補足として、あなたはまたあなたのコードのためのより良い提案を求めました。
さて、2回のeval呼び出しで何を達成しようとしましたか?コマンドを直接呼び出してみませんか?代わりにこれを行ってください:

for i = svec
   load (['%mydirectory\s', int2str(i), '.txt'], '-ascii');
end

また、あなたが省略したと思うバックスラッシュを自由に追加しました。

ほとんどの場合、を使用しない方がよいでしょうeval選択肢を確認してください...

于 2012-06-10T14:29:11.647 に答える
1

少しすっきりした方法:

for i=1:120
    fname = fullfile('mydirectory', sprintf('s%d.txt',i));
    X = load(fname, '-ascii');
end
于 2012-06-10T14:45:18.743 に答える