how to add header for new output file?

14 次查看(过去 30 天)
greeting matlab expert, I have multiple meteorological data in txt format and the content just like below
2.11 METEOROLOGICAL DATA RINEX VERSION / TYPE
teqc 2018Jun8 20180904 15:17:08UTCPGM / RUN BY / DATE
Linux 2.6.32-573.12.1.x86_64|x86_64|gcc -static|Linux 64|=+ COMMENT
cjem MARKER NAME
7 PR TD HR WS WD RI HI # / TYPES OF OBSERV
0.0 PR SENSOR MOD/TYPE/ACC
0.0 TD SENSOR MOD/TYPE/ACC
0.0 HR SENSOR MOD/TYPE/ACC
0.0 WS SENSOR MOD/TYPE/ACC
0.0 WD SENSOR MOD/TYPE/ACC
0.0 RI SENSOR MOD/TYPE/ACC
0.0 HI SENSOR MOD/TYPE/ACC
0.0000 0.0000 0.0000 0.0000 PR SENSOR POS XYZ/H
END OF HEADER
18 4 25 2 57 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
18 4 25 2 57 30 1001.6 29.9 62.1 0.0 0.0 0.0 0.0
18 4 25 2 58 0 1001.6 30.0 62.2 0.0 0.0 0.0 0.0
18 4 25 2 58 30 1001.6 30.0 61.5 0.0 0.0 0.0 0.0
18 4 25 2 59 0 1001.6 30.0 61.4 0.0 0.0 0.0 0.0
18 4 25 2 59 30 1001.5 30.0 61.9 0.0 0.0 0.0 0.0
18 4 25 3 0 0 1001.5 30.0 61.9 0.0 0.0 0.0 0.0
The first six column below header are date time and I try to convert it to modified juliandate. This is my script
clc;clear; close all;
input_folder = 'E:\Data\data';
files = dir(fullfile(input_folder, '*.txt'));
file_paths = fullfile({files.folder}, {files.name});
nfile = numel(file_paths);
for i = 1 : nfile
data= readmatrix(file_paths{i},'NumHeaderLines',15);% a display of data in a single file
data(:,end)=[];
data(:,1) = data(:,1)+2000; %add year
T1 = array2table(data(:,7:end)); %main data
DT = datetime(data(:,1:6)); %datetime
jd = juliandate(DT); %Juliandate
MJD = jd - 2400000.5; %Modified Juliandate
T1 = addvars(T1,MJD,'before','Var1');
% % TT1 = table2timetable(T1);
% % TT1rt = retime(TT1,'daily','mean');
% % TT2 = timetable2table (TT1rt);
t=T1(:,:);
c=table2cell(t);
newdata = [c];
writecell (newdata,file_paths{i},'Delimiter','space');
end
how can I write new converted txt file with the header on?

采纳的回答

Jan
Jan 2023-1-22
移动:Jan 2023-1-22
You want to copy the header? Read the first 15 lines and write it:
[fid, msg] = fopen(file_paths{i}, 'r');
assert(fid > 0, msg);
Head = cell(1, 15);
for k = 1:15
Head{k} = fgetl(fid);
end
fclose;
[fid, msg] = fopen(theNexFile, 'w');
assert(fid > 0, msg);
fprintf(fid, '%s\n', Head{:});
Use 'WriteMode', 'append' in writecell afterwards.
Note: newdata = [c] is exactly the same as: newdata = c. [] is Matlab's operator for concatenation. [c] concatenates c with nothing.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Dates and Time 的更多信息

标签

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by