我有一个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 ...
...
答案 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上,我们可以使用sed
或tr
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