matlab 批量导入CTD数据+温盐剖面图

clear all;close all;clc
%% 读取数据
filelist=dir('/Users/boopstore3/Desktop/matlab/shiyanchengxu/six/CTD_data'); 
filename1 = filelist(3:6,:);
for i=1:4
    filename=filename1(i).name;
    [lat,lon,gtime,data,names,h]=cnv2mat(filename);%读取经纬度,深度,观测时间和观测数据
    data=data(:,2:4);names=names(2:4,:);%只保留压强(水深),温度和盐度
%%       数据质量控制
    ind1=find(data(:,1)>0.3&data(:,1)<h);%截取有效水深
    data=data(ind1,:);%截取有效水深的温度和盐度
    ind2=find(data(:,1)==max(data(:,1)));%分开下放数据和回升数据
    D_data=data(1:ind2,:);%下放数据
    U_data=data(ind2:end,:);%上升数据

    D_data(:,2)=smooth(D_data(:,2),50,'rloess');%滑动平均滤去噪点数据
    D_data(:,3)=smooth(D_data(:,3),50,'rloess');
    U_data(:,2)=smooth(U_data(:,2),50,'rloess');
    U_data(:,3)=smooth(U_data(:,3),50,'rloess');

    data=[D_data;U_data];
    DATA=[];
    for j=0.3:0.1:max(data(:,1))  % 从0.3米到最大水深,每隔0.1米取中位数作为中间水深的值
        ind3=find(data(:,1)>=j&data(:,1)<=j+0.1);
        DATA=[DATA;j+0.05,median(data(ind3,2:3),1)];
    end

    DATA(:,2)=smooth(DATA(:,2),10,'rloess');            % 再用滑动平均去除噪声数据
    DATA(:,3)=smooth(DATA(:,3),10,'rloess');

%%                          画图
    figure(i)
    set(0,'defaultfigurecolor','w')
    hl1=plot(DATA(:,3),DATA(:,1),'r','linewidth',2);    % 画温度
    ax1=gca;
    set(ax1,'xlim',[10 30],'ylim',[0 DATA(end,1)],'XMinorTick','on','ydir','reverse',...
          'box','on','xcolor',get(hl1,'color')) 
    xlabel('Temperature(\circC)','fontsize',10)
    ylabel('Depth(m)','fontsize',10)
    set(ax1,'fontsize',10)
    [hl2,ax2,ax3] = floatAxisX(DATA(:,2),DATA(:,1),'b','Salinity(psu)',[32 35 0 DATA(end,1)]); %画盐度
    set(hl2,'linewidth',2)
    set(ax2,'ydir','reverse','YMinorTick','on')
    set(ax3,'fontsize',10)
    set(get(ax3,'xLabel'),'fontsize',10)

    set(gcf,'PaperPositionMode', 'manual')
    set(gcf,'PaperUnits','centimeters')
    set(gcf,'PaperPosition',[0 0 9.5 11.5])
    set(gcf,'Papersize',[9.5 11.5])
end

  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
对于使用Matlab读取CTD数据,可以使用一些相关的工具和函数来实现。其中,可以考虑使用以下几种方法: 1. 使用Matlab的文本文件读取函数,如`textscan`或`importdata`,来读取CTD数据文件。这些函数可以根据文件的格式和结构,将数据读取到Matlab的变量中进行后续处理和分析。 2. 如果CTD数据文件是以特定的格式存储的,可以使用Matlab中的相关工具箱或函数来读取该格式的文件。例如,如果CTD数据文件是以NetCDF格式存储的,可以使用Matlab中的NetCDF工具箱来读取和处理该文件。 3. 如果CTD数据文件是以其他特定格式存储的,可以尝试查找和使用第三方的Matlab工具箱或函数来读取该格式的文件。例如,可以搜索和使用与CTD数据格式兼容的Matlab工具箱或函数。 需要注意的是,具体的读取方法和工具箱可能会根据CTD数据文件的格式和结构而有所不同。因此,在实际操作中,需要根据具体的CTD数据文件格式和要求,选择合适的方法和工具来读取数据。 \[1\] 提供了一个Matlab程序GOdist,用于分析Affymetrix芯片表达数据,与CTD数据读取无关。 \[2\] 提供了一个Perl程序GOArray,用于确定相关的GO术语对于GOI是否过表达,与CTD数据读取无关。 \[3\] 提供了一个工具L2L,用于发现芯片数据中隐藏的生物学显著性,与CTD数据读取无关。 #### 引用[.reference_title] - *1* *2* *3* [GO分析相关工具汇总](https://blog.csdn.net/SHMILYRINGPULL/article/details/8168839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值