% 按轨迹提取坐标点
% 提取LT6文件的三维坐标数据,按每一条轨迹数据为单位存储
disp('开始提取坐标值!!!')
for i = 1:5
% 将char型数据转换为字符串
temp_i = num2str(i);
% 根目录(相对路径)
root_str = 'wh_data/';
% 动态更新文件夹名称
folder_name = 'SFO2006Q1-';
% 完成更新后的文件夹名称
temp_str = strcat(folder_name,temp_i);
% 拼接字符串,存储文件的相对路径
relative_path = strcat(root_str,temp_str);
% 遍历文件夹下的文件
file = dir(relative_path);
len = length(file);
% 循环条件的设置是因为文件中开始和结束都有其它不同的文件
for j = 3:len-2
% 在此循环开始打开每一个文件,利用extact_track_txt函数进行三维坐标信息的提取
% 取出每一个lt6文件的文件名称
file_txt_name = file(j).name;
% 字符串分割
temp = split(file_txt_name,'.');
% 每一个lt6文件的相对路径
a = strcat('/',file_txt_name);
path = strcat(relative_path,a);
% 调用提取txt文件中三维坐标点的函数extact_track_txt
[lines,row,every_lt6] = extact_track_txt(path);
% 存储的名称为‘*.mat’
% store_name = strcat(temp{1,1},'.mat');
save(['mat数据\',temp{1,1}],'every_lt6');
end
end
function [lines,row,every_lt6] = extact_track_txt(path)
% 提取lt6文件中三维空间坐标点
% path:提取的文件路径
% 打开文件(以下的路径方式都可以打开)
% f = fopen('.\wh_data\SFO2006Q1-1\20060101.lt6');
% f = fopen('wh_data\SFO2006Q1-1\20060101.lt6');
% 打开文件
file_id = fopen(path);
% 存放每一个lt6文件的三维坐标点的mat矩阵
every_lt6 = {};
% 初始化文件行数
lines = 0;
% 存储矩阵every_lt6的行数
row = 1;
% feof:检测是否是文件末尾
while ~feof(file_id)
% 读取每一行
file = fgetl(file_id);
% 只有三维坐标点的行中有行号,其余都没有,所以判断有没有逗号作为判断条件
if contains(file,',')
% 读取每一行的三维坐标点
content = textscan(file,'%d %d %d %d %d','Delimiter',',');
% 将每一维坐标从cell中取出,放入到矩阵中
for i = 1:3
every_lt6{row,i} = content{1,i};
end
% 更新存储矩阵的行号
row = row + 1;
% 更新lt6的总行号
lines = lines + 1;
else
% 更新行号
lines = lines + 1;
end
end
% 关闭文件
fclose(file_id);
end