我有一个混合数字和字符串文本文件,其中不同的字段除以[]。它的一些内容如下:
[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的导入和导出命令的性能,但我找不到解决方案。
答案 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);