Matlab中数据读写问题
有这样一个txt文件:
$MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
5
1 1 1 0
2 -1 1 0
3 -1 -1 0
4 1 -1 0
5 0 0 0
$EndNodes
$Elements
12
1 15 2 0 1 1
2 15 2 0 2 2
3 15 2 0 3 3
4 15 2 0 4 4
5 1 2 0 1 2 1
6 1 2 0 2 4 1
7 1 2 0 3 3 2
8 1 2 0 4 3 4
9 2 2 0 6 5 4 1
10 2 2 0 6 5 2 3
11 2 2 0 6 3 4 5
12 2 2 0 6 1 2 5
$EndElements
文本内容分为3部分,需要把第3部分12后面的数据读取出来,有什么好办法?
在网上查了很多方法,处理过程中都遇到问题。哎。
[解决办法]
可能比较笨,但是可以解决问题。关键是strread函数,可以把字符串读成单个部分,同时转换为数字。
1. 读文本
fid = fopen(文件名);
T = textscan(fid,'%s','delimiter','\n');
T = T{1};
2. 定位
loc = strmatch('$Elements', T );
3. 读数据
data = zeros(...); %预分配空间,如果宽度不一样,就分配的大些。
for i=1:size(data,1)
data(i, :) = strread(T{loc+1 + i});
end