在MATLAB中用逗号小数分隔符读取txt文件

时间:2016-03-19 15:41:22

标签: matlab file-io decimal-point

我有一个txt文件:

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 ...
...

3 个答案:

答案 0 :(得分: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{:});

答案 1 :(得分:0)

this MathWorks Central thread建议的快捷方法是使用strrep

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

首先将数据作为字符串读取,然后用点替换逗号并使用str2num转到双打。

答案 2 :(得分:0)

另一种可能性是简单地用文件中的句点替换逗号,然后在MATLAB中加载新文件。

在Linux或Mac上,我们可以使用sedtr UNIX实用程序:

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

在Windows上,我们可以使用PowerShell:

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

无论如何,我们可以简单地在MATLAB中加载新文件:

>> load -ascii file2.dat
>> disp(file2)
    1.6000    2.0000    6.5000    5.0000
         0    1.0000    4.0000    2.5000