Matlab 动态修改字符串并判断,提取txt文件中数据

% 按轨迹提取坐标点

% 提取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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值