使用MATLAB写入/读取txt文本文档数据、存储/读入mat文件、规定格式的文件/读写bin文件

***********************************数据写入txt文件
1、代码

% %13.6f 其中13表示字节长度 6表示6位小数
%需要为 \r\n 以便文档以文本文档形式 查看
% imui 需按列的形式呈现 由于函数fprintf 按照列顺序写入

imui=imu(1:5000,:)';   %为简单 选取一部分 保存为 txt 文件
fileID = fopen('imudata.txt','w');  
fprintf(fileID,'%13.6f,%15.12f,%15.12f,%15.12f,%15.12f,%15.12f,%15.12f\r\n', imui);
fclose(fileID);  

1补充 **********************数据写入bin文件

fid = fopen(1.bin’,‘w’);
a = [1, 2, 3; 4, 5, 6];
fwrite(fid,a,‘double’);
fclose(fid);

参考:
https://blog.csdn.net/pioneerzdn/article/details/117665781?ops_request_misc=&request_id=&biz_id=102&utm_term=MATLAB%E6%95%B0%E6%8D%AE%E4%BF%9D%E5%AD%98%E4%B8%BA%E4%BA%8C%E8%BF%9B%E5%88%B6bin&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-3-117665781.142v96control&spm=1018.2226.3001.4187

2、imui 在matlab 中的呈现在这里插入图片描述
3、写入的txt文本文档呈现
在这里插入图片描述
***********************************读取txt数据文件
%IMUt.txt文件中为纯数字

imu=importdata('IMUt.txt'); 

***********************************存储mat数据文件
1、 存储的变量为imui,存储的变量名为imudata10.mat,
存储的路径为 D:\psinsGPSIMUdata\2023GIdata45\

path1 = 'D:\psinsGPSIMUdata\2023GIdata45\';
save (strcat(path1,'imudata10.mat'),  'imui') 

2、 在当前文件夹下存储:

save imudata10  imui  

***********************************读取mat数据文件
1、% 加载路径path1下的文件 imudata10.mat

path1 = 'D:\psinsGPSIMUdata\2023GIdata45\';
load(strcat(path1, 'imudata10.mat'))

2、加载当前文件夹下的文件

 load('imudata10.mat');   

***********************************数据重写为一定的格式

path = 'F:\ARTK2\result\';

fname=strcat(path,'testSRTKLC0331gb.txt');  
outfile=strcat(path,'testSRTKLC0331gb.pos');

fid=fopen(fname);   %读
fp=fopen(outfile,'w'); %写
sep=' '; str_vel=''; str_att='';
        
        
str_pos=sprintf('%14s%s%14s%s%14s%s%3s%s%3s%s%8s%s%8s%s%8s%s%8s%s%8s%s%8s%s%6s%s%6s',...
    'x-ecef(m)',sep,'y-ecef(m)',sep,'z-ecef(m)',sep,'Q',sep,'ns',sep,...
    'sdx(m)',sep,'sdy(m)',sep,'sdz(m)',sep,'sdxy(m)',sep,...
    'sdyz(m)',sep,'sdzx(m)',sep,'age(s)',sep,'ratio');

str_time=sprintf('%s  %-12s%s','%','GPST',sep);

str=[str_time,str_pos];
fprintf(fp,'%s',str);
 fprintf(fp,'\n');
   
 sowz=[]; i=0;
while ~feof(fid)
   
    line=fgets(fid);
     if line(1)=='n'
         
     else
         i=1+i;
         val=strsplit(line);
         week=2255;
         sow=str2double(val(1));
         %         time=gpst2time(week,sow);
         val=str2double(strsplit(line));
         pos=val(2:4);
         posP = [val(5) zeros(1,5)];
         vel=val(7:9);
         velP= [val(10) zeros(1,5)];
         stat = val(12);
         ns = val(17);  %卫星个数
         ratio = val(23);
         age = 0.0;
                  
 
         str_time=sprintf('%4d%s%10.3f',week,sep,sow);
         str_pos=sprintf('%s%14.4f%s%14.4f%s%14.4f%s%3d%s%3d%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%6.2f%s%6.1f',...
             sep,pos(1),sep,pos(2),sep,pos(3),sep,stat,sep,ns,sep,posP(1),sep,posP(2),...
             sep,posP(3),sep,posP(4),sep,posP(5),sep,posP(6),sep,age,sep,ratio);
         
         str=[str_time,str_pos];
         sowz=[sowz sow];
         if(i~=1)
             interval = sow-sowz(i-1);
             
             if(interval ~=1)   %采样间隔为0时,结果文件补全
              str1= regexp(str,'\s+','split');
              
              for j=1:(interval-1)
                  sow1= sowz(i-1)+j;
                  str1(1,2) = {num2str(sow1)};
                  str1(1,7)  = {num2str(0)};
                  
                  week=str2num(str1{1,1}); sow=str2num(str1{1,2}); pos(1) =str2num(str1{1,3}); pos(2) =str2num(str1{1,4}); pos(3) =str2num(str1{1,5});
                  stat=str2num(str1{1,6}); ns=str2num(str1{1,7}); posP(1)=str2num(str1{1,8}); posP(2)=str2num(str1{1,9});
                  posP(3)=str2num(str1{1,10}); posP(4)=str2num(str1{1,11}); posP(5)=str2num(str1{1,12});
                  posP(6)=str2num(str1{1,13}); age=str2num(str1{1,14}); ratio=str2num(str1{1,15});
                  
                  str_time=sprintf('%4d%s%10.3f',week,sep,sow);
                  str_pos=sprintf('%s%14.4f%s%14.4f%s%14.4f%s%3d%s%3d%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%8.4f%s%6.2f%s%6.1f',...
                      sep,pos(1),sep,pos(2),sep,pos(3),sep,stat,sep,ns,sep,posP(1),sep,posP(2),...
                      sep,posP(3),sep,posP(4),sep,posP(5),sep,posP(6),sep,age,sep,ratio);
                  str12=[str_time,str_pos];
                  
                  fprintf(fp,'%s',str12);
                  fprintf(fp,'\n');
              end
  
             end
             fprintf(fp,'%s',str);
             fprintf(fp,'\n');
         end
     end
end
    
fclose(fp);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值