でコンマ小数点区切りで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 ...
...
でコンマ小数点区切りで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 ...
...
これを行うための簡単な組み込みの方法は、(驚くほど!)はありません。ファイル全体を読み込んだ後、文字列の置換を行い、結果を数値に変換したいと思うでしょう。
% 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{:});
this MathWorks Central threadによって提案された簡単な方法は、strrep
を使用することです:
data=strrep(data,'.',',')
だから、最初のドットでコンマを交換し、ダブルスに行くためにstr2num
を使用し、その後、文字列としてデータを読み込みます。
別の方法として、カンマをファイル内のピリオドに置き換えてから、新しいファイルをMATLABにロードすることもできます。
LinuxやMacでは、私たちはsed
かtr
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
がありますか?これは多くの(米国以外の)国のデフォルト小数点区切り文字です。 – Adriaan
@Adriaan私が知っているわけではありません。カンマは区切り文字としても使用されるので、ややこしいことがあります。私は、多くのプログラムのUI側で小数点区切り文字が使用されていますが、エクスポートされるデータのほとんどは実際にはピリオド(Excel以外)を使用していると思います。 – Suever
はい、Excelは実際にはあなたのシステム設定が何であれ使用します。それは言語ではなくロケール設定を意味します。実際にお尻の痛み。もう一つの解決策は、Excelにロードし、ダイアログボックスの3つのボタンをクリックして変換することですが、とにかくExcelを使用したいと考えています。私はあなたの解決策が良いと言いたいと思います。 – Adriaan