海洋要素计算:温盐跃层的分析

摘要

  提供某次海洋观测的RBR-CTD测得的海洋要素数据,要求完成以下内容:

  1. 根据数据的头文件,给出观测的基本信息。
  2. 进行异常数据的剔除,仅保留“下放(Down-casting)”时观测的数据。
  3. 去尖峰。
  4. 将数据处理成1m平均的形式。保存数据文件。
  5. 绘制温度和盐度的剖面图。

文件下载

RBR-CTD观测数据:G4.txt
去尖峰函数:despike.m

处理流程

打开文件

1
2
3
4
5
6
7
% file open
fid1 = fopen('G4.txt');
% display the information of the data
for ii = 1:4
hdata{ii} = fgets(fid1);
disp(hdata{ii})
end

读取数据

1
2
3
4
5
6
% Read Data
% [Date,Time,Cond,Temp,Pres,D_O2,PAR,FlC_a,Depth,Salin,SpecCond,DensAnom,SoS,xdO2C] = ...,
% textread('G4.txt','%s%s%f%f%f%f%f%f%f%f%f%f%f%f','headerlines',51);
data_cell = textscan(fid1,'%s%s%f%f%f%f%f%f%f%f%f%f%f%f','headerlines',51);
fclose(fid1);

数据处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
%% data processing
% cell to mat
data = cell2mat(data_cell(3:14));
Depth = data(:,9);
% find the data during Down-casting
index = find(Depth > 0 & Depth < max(Depth));
mod_data = data(index,:);
% despike
dsp_data=despike(mod_data,3);
% write to text file
% fprintf(fid2,'%f %f %f %f %f %f %f %f %f %f %f %f\n',dsp_data');
% get depth temp and salin
dsp_depth = dsp_data(:,7)';
dsp_temp = dsp_data(:,2)';
dsp_salin = dsp_data(:,8)';
% initializing the variables
yi = 0:1.0:max(dsp_depth);
ave_temp = zeros(1,length(yi));
ave_salin = zeros(1,length(yi));
% the average of temp and salin in each meters
for ii = 1:length(yi)
ave_temp(ii) = mean( dsp_temp(find(dsp_depth > ii-1 & dsp_depth <ii)));
ave_salin(ii) = mean( dsp_salin(find(dsp_depth > ii-1 & dsp_depth <ii)));
end

数据导出

1
2
3
4
5
6
7
8
9
10
11
%% output new data to a text file
fid2 = fopen('new_Data.txt','a+');
for ii = 1:4
fprintf(fid2,hdata{ii});
end
fprintf(fid2,'%s\n',' ');
fprintf(fid2,'%s%s%s\n','depth temp salin ');
new_data = [yi;ave_temp;ave_salin];
fprintf(fid2,'%s\n',' ');
fprintf(fid2,'%6.4f %6.4f %6.4f\n',new_data);
fclose(fid2);

绘制温盐跃层图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
%% plot
h1 = plot(ave_temp,-yi,'--m');
xlabel('Temperature /\circC');
ylabel('Depth /m');
set(gca,'position','default');
set(gca,'YTickLabel',{[70:-10:0]}); % change the y axis label
box off;
axes;
h2 = plot(ave_salin,-yi,'b');
xlabel('Salinity');
set(gca,'position','default','xaxislocation','top','color','none');
set(gca,'YTickLabel',{},'yaxislocation','right');
box off;
% show the legend
legend([h1,h2],'Temperature','Salinity','Location', 'NorthWest');
% save as jpg file
saveas(gcf,'temp-salin','jpg');

结果

若本文对您有帮助,请打赏鼓励本人!
---------------- End ----------------
扫二维码
扫一扫,使用手机查看

扫一扫,使用手机查看

QQ