2013-10-09 88 views
3

要运行某个软件,我正在使用.txt - 我需要使用Matlab来操作的输入文件。 我知道如何去做,而且我没有预料到问题。由于它不起作用,我将操作脚本减少到了最低限度,所以实际上没有任何改变。除了一些空格之外,其他软件似乎对此非常敏感。Textscan在行首跳过所需的空格

部分我的文件看起来像:

... 
*CONTROL_TERMINATION 
$# endtim endcyc  dtmin endeng endmas 
    1.000000   0  0.000  0.000  0.000 
*CONTROL_TIMESTEP 
$# dtinit tssfac  isdo tslimt  dt2ms  lctm  erode  ms1st 
    0.000 0.900000   0  0.000 -1.000E-4   0   0   0 
$# dt2msf dt2mslc  imscl 
    0.000   0   0 
... 

我加载它Matlab和直接再次保存它无需改动:

% read original file 
fid = fopen('filename.txt','r'); 
param = textscan(fid,'%s','delimiter','\n'); 
rows = param{1,1}; 
fclose(fid); 

% overwrite to new file 
fid = fopen('filename.txt','w'); 
fprintf(fid, '%s\r\n', rows{:}); 
fclose(fid); 

输出文件缺少白色空间在每行的开头,这似乎是输入和输出文件的唯一区别。 (至少我希望如此)

... 
*CONTROL_TERMINATION 
$# endtim endcyc  dtmin endeng endmas 
1.000000   0  0.000  0.000  0.000 
*CONTROL_TIMESTEP 
$# dtinit tssfac  isdo tslimt  dt2ms  lctm  erode  ms1st 
0.000 0.900000   0  0.000 -1.000E-4   0   0   0 
$# dt2msf dt2mslc  imscl 
0.000   0   0 
... 

虽然它似乎怪我,这应该是真正的原因 - 我该怎么改变,这两个文件看100%相同?我遇到的问题是白色空间有不同的长度。

回答

3

您可以使用textscan中的whitespace选项,并将其设置为空字符串。

param = textscan(fid,'%s','delimiter','\n','whitespace',''); 

缺省情况下,textscan不包括任何数据字段(doc center)的处理导致的空白字符。