2016-03-19 10 views
2

でコンマ小数点区切りでTXTファイルを読む:「」私のようなtxtファイルを持っているMATLAB

の代わりに、小数点として「」、である
1,6 2 6,5 5 ... // ~ 1000 columns 
0 1 4 2,5 ... 
... // ~1000 rows 

以下のような出力にMATLABで適切にこれを読んでする方法

1.6 2 6 5 ... 
0 1 4 2.5 ... 
... 

答えて

1

これを行うための簡単な組み込みの方法は、(驚くほど!)はありません。ファイル全体を読み込んだ後、文字列の置換を行い、結果を数値に変換したいと思うでしょう。

% Read file in as a series of strings 
fid = fopen('data.txt', 'rb'); 
strings = textscan(fid, '%s', 'Delimiter', ''); 
fclose(fid); 

% Replace all commas with decimal points 
decimal_strings = regexprep(strings{1}, ',', '.'); 

% Convert to doubles and join all rows together 
data = cellfun(@str2num, decimal_strings, 'uni', 0); 
data = cat(1, data{:}); 
+0

がありますか?これは多くの(米国以外の)国のデフォルト小数点区切り文字です。 – Adriaan

+0

@Adriaan私が知っているわけではありません。カンマは区切り文字としても使用されるので、ややこしいことがあります。私は、多くのプログラムのUI側で小数点区切り文字が使用されていますが、エクスポートされるデータのほとんどは実際にはピリオド(Excel以外)を使用していると思います。 – Suever

+1

はい、Excelは実際にはあなたのシステム設定が何であれ使用します。それは言語ではなくロケール設定を意味します。実際にお尻の痛み。もう一つの解決策は、Excelにロードし、ダイアログボックスの3つのボタンをクリックして変換することですが、とにかくExcelを使用したいと考えています。私はあなたの解決策が良いと言いたいと思います。 – Adriaan

0

this MathWorks Central threadによって提案された簡単な方法は、strrepを使用することです:

data=strrep(data,'.',',') 

だから、最初のドットでコンマを交換し、ダブルスに行くためにstr2numを使用し、その後、文字列としてデータを読み込みます。

0

別の方法として、カンマをファイル内のピリオドに置き換えてから、新しいファイルをMATLABにロードすることもできます。

LinuxやMacでは、私たちはsedtr UNIXユーティリティを使用することができます。Windows上で

$ cat file.dat | tr ',' '.' > file2.dat 

を、私たちはPowerShellを使用することができます。

PS> gc file.dat | % { $_ -replace ',', '.' } | sc -encoding ascii file2.dat 

Eitherway、私たちは、MATLABで新しいファイルを読み込むことができます単に:

>> load -ascii file2.dat 
>> disp(file2) 
    1.6000 2.0000 6.5000 5.0000 
     0 1.0000 4.0000 2.5000 
関連する問題