现有一个mat文件,其内容如下:
目标:要将data.mat中的Obs_Iridium_A转为文本格式。
分析:
data.mat里面包含了4个struct结构的成员,Obs_Iridium_A是其中之一,Obs_Iridium_A为1*7496维,7496代表里面包含了这么多个某种类型的struct,具体如下:
从上面看出struct里面的数据包含了不同类型的值,所以直接上代码:
data=load('Data.mat');
subData=data.Obs_Iridium_A;%获取Obs_Iridium_A数据
n_row=size(subData,2); %获取Obs_Iridium_A中包含的struct个数
fid = fopen('Obs_Iridium_A.txt', 'w');
for i=1:n_row
eachData=subData(i);%获取每个struct
%输出每个struct的内容
fprintf(fid, '%s\t%d\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\n',...
eachData.name,eachData.epoch,...
eachData.position(1),eachData.position(2),eachData.position(3),...
eachData.velocity(1),eachData.velocity(2),eachData.velocity(3),...
eachData.elevation,eachData.azimuth,eachData.range,eachData.doppler);
end
fclose(fid);
如果struct里面的数据都是数字,那么就不需要这么繁琐了,例如:
data=load('ref_avp_all.mat');
roverDataMat=cell2mat(struct2cell(data));%data的struct全是数字
save('ref_avp_all.txt','roverDataMat','-ascii');