在matlab中为.dat文件指定小数分隔符

时间:2013-12-12 22:38:44

标签: matlab

我有一堆.dat文件,其中小数点分隔符是逗号而不是点。 MATLAB中是否有任何函数将逗号设置为分隔符?

1 个答案:

答案 0 :(得分:2)

您必须以文字形式阅读数据(textscantextreaddlmreadetc.)并转换为数字。

假设您已将数据读入包含单元格中每个数字的单元格数组中:

>> C = {'1,2345','3,14159','2,7183','1,4142','0,7071'}
C = 
    '1,2345'    '3,14159'    '2,7183'    '1,4142'    '0,7071'

使用strrepstr2double,如下所示:

>> x = str2double(strrep(C,',','.'))
x =
    1.2345    3.1416    2.7183    1.4142    0.7071

对于来自评论的示例数据,您的文件“1.dat”的格式与:

类似
1,2 3,4
5,6 7,8

这里有一个空格作为分隔符。默认情况下,textscan使用空格作为分隔符,这样就可以了。您需要在下面更改的是数据中列数的格式说明符,方法是为每列重复%s(例如,我们需要'%s%s'两列):

>> fid = fopen('1.dat','r');
>> C = textscan(fid,'%s%s')
C = 
    {2x1 cell}    {2x1 cell}
>> fclose(fid);

textscan的输出是由空格分隔的每列的单元格数组。将列组合成单个单元格数组并运行命令以转换为数字:

>> C = [C{:}]
C = 
    '1,2'    '3,4'
    '5,6'    '7,8'
>> x = str2double(strrep(C,',','.'))
x =
    1.2000    3.4000
    5.6000    7.8000