在具有不同字段的现有混合数字和字符串文本文件上书写

时间:2014-05-07 13:02:33

标签: matlab file text overwrite

我有一个混合数字和字符串文本文件,其中不同的字段除以[]。它的一些内容如下:

   [JUNCTIONS]
   ;ID                  Elev            Demand          Pattern         
    2                   0               0                                   ;
    9                   0               0                                   ;
    5                   0               11                                  ;
    6                     0             20                                  ;

    [RESERVOIRS]
    ;ID                 Head            Pattern         
     1                  5                                   ;
     4                  50                                  ;


     [PIPES]
     ;ID         Node1      Node2   Length  Diameter   Roughness   MinorLoss  Status
     66           2         9       1000        250         100         0           Open    ;
     2            9           4         1000      150       100         0        Open   ;
     3            9     5         1000      150       100         0        Open     ;
     4            2         6         1000      150       100         0        Open     ;

我想在MATLAB的“Demand”和“Roughness”列下面覆盖数字变量。 你能帮我吗我读到了Matlab的导入和导出命令的性能,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

这是一个小脚本,可以将所有数据读入单元格数组。每个单元格都是一列数据。正如Divakar所说,使数据垂直对齐,或者当其中一行与最后一行不同时,文本扫描将停止。

fid = fopen(file,'r');

while 1
    line=fgetl(fid);
    if ~strcmp(line,'')
        if ~isempty(strfind(line,'['))
            % //Let's check it
            start = strfind(line,'[');
            split = strfind(line,']');
            category = line(start+1:split-1);
            if strcmp(category,'PIPES')
                break;
            end
        end
    end
end
% //skip the header line
line=fgetl(fid);
% //So now we're on the right line, let's read in the table.
data = textscan(fid,'%d %d %d %d %d %d %d %s');

fclose(fid);