所以有人看么?
有人看的话给我打个好评或者是留个评论,我再去抓紧修改,没人看的话就直接这样了。
clear
clc
filename='.\';
all_ncname=dir([filename,'*.','nc']);
for j = 1:length(all_ncname)
ncname=all_ncname(j).name;
glider_nc2mat(filename,ncname);
cell2mat_interp(filename,ncname(1:14));
j
end
function glider_nc2mat(filename,ncname)
keywords={'latitude','longitude','depth','temperature','salinity','density','pressure'};
shortwords={'lat','lon','depth','temp','sali','densi','press'};
for kwn = 1:length(keywords)
eval([shortwords{kwn},'=ncread([filename,ncname],keywords{kwn});'])
end
time=ncread([filename,ncname],'time')/24/3600+datenum('1970-1-1 00:00:00');
%%save time_location_features.mat
glider_time=unique(time);
for i = 1:length(glider_time)
actual_index=find(time==glider_time(i));
five_column=[depth,temp,sali,densi,press];
five_column=sortrows(five_column(actual_index,:));
glider_depth{i}=five_column(:,1);
glider_temp{i}=five_column(:,2);
glider_sali{i}=five_column(:,3);
glider_densi{i}=five_column(:,4);
glider_press{i}=five_column(:,5);
glider_lat(i)=mean(lat(actual_index),'omitnan');
glider_lon(i)=mean(lon(actual_index),'omitnan');
end
glider_lat=glider_lat';glider_lon=glider_lon';
save([filename,ncname(1:14),'.mat'],'glider_time','glider_lat','glider_lon','glider_depth','glider_temp','glider_sali','glider_densi','glider_press');
end
function cell2mat_interp(filename, glider_name)
load([filename, glider_name, '.mat']);
interp_depth = 5:500;
interp_temp = NaN(length(interp_depth), length(glider_depth));
interp_sali = NaN(length(interp_depth), length(glider_depth));
interp_densi = NaN(length(interp_depth), length(glider_depth));
interp_press = NaN(length(interp_depth), length(glider_depth));
for i = 1:length(glider_depth)
G_d = glider_depth{i};
G_temp = glider_temp{i};
G_sali = glider_sali{i};
G_densi = glider_densi{i};
G_press = glider_press{i};
valid_idx = ~isnan(G_d) & ~isnan(G_temp) & ~isnan(G_sali) & ~isnan(G_densi) & ~isnan(G_press);
G_d_valid = G_d(valid_idx);
G_temp_valid = G_temp(valid_idx);
G_sali_valid = G_sali(valid_idx);
G_densi_valid = G_densi(valid_idx);
G_press_valid = G_press(valid_idx);
F_temp = griddedInterpolant(G_d_valid, G_temp_valid, 'cubic');
F_sali = griddedInterpolant(G_d_valid, G_sali_valid, 'cubic');
F_densi = griddedInterpolant(G_d_valid, G_densi_valid, 'cubic');
F_press = griddedInterpolant(G_d_valid, G_press_valid, 'cubic');
interp_temp(:, i) = F_temp(interp_depth);
interp_sali(:, i) = F_sali(interp_depth);
interp_densi(:, i) = F_densi(interp_depth);
interp_press(:, i) = F_press(interp_depth);
end
save([filename, glider_name, '_interp.mat'], 'interp_depth', 'interp_temp', 'interp_sali', 'interp_densi', 'interp_press');
end