MATLAB海洋数据处理:读取SWAN波谱函数

最近需要读取swan的波谱数据,文件挺多的,写了一个稍有规则的matlab函数。贴出来,方便及时找到,以及希望不足之处能到大佬们的指点。

%% ntime表示数据的时间长度,

function S1=read_swan_S1(file,ntime)

fid=fopen(file,'r');

%跳过头文件信息

for i=1:6;

temp=fgetl(fid);

end

% 读取站点数量

location_number=fscanf(fid,'%d\n',1);  

% 读取站点的坐标

location=fscanf(fid,'%f%f\n',[2,location_number]);

location=location';

% 读取  absolute frequencies in Hz (AFREQ)

temp=fgetl(fid);  % 跳过AFREQ

AFREQ_number=fscanf(fid,'%d',4);

temp=fscanf(fid,'%s\n',3);  % 读文字

AFREQ=fscanf(fid,'%f\n',AFREQ_number);

temp=fgetl(fid); % 跳过文字

QUANT=fscanf(fid,'%d\n',1); % number of quantities in table

for i=1:10

temp=fgetl(fid);  % 读文字以及一些异常值(58-66)

end

%%  

for t=1:ntime;

   time=fscanf(fid,'%s\n',1);

   temp=fscanf(fid,'%s\n',3);

   for s=1:location_number;

        temp=fscanf(fid,'%s\n',2);

        data=fscanf(fid,'%f%f%f\n',[3,AFREQ_number]);

        vadens=data(1,:);

        ndir=data(2,:);

        dsprdegr=data(3,:);

        vadens(vadens==-99)=nan;

        ndir(ndir==-999.0)=nan;

        dsprdegr(dsprdegr==-9)=nan;  

        Vadens(s,:,t)=vadens;

        Ndir(s,:,t)=ndir;

        Dsprdegr(s,:,t)=dsprdegr;

        Time(t,:)=time;

        

   end

end

   S1.Vadens=Vadens;

   S1.Ndir=Ndir;

   S1.Dsprdegr=Dsprdegr;

   S1.Time=Time;

   S1.QUANT=QUANT;

   S1.AFREQ=AFREQ;

   S1.AFREQ_number=AFREQ_number;

   S1.location=location;

   S1.location_number=location_number;

   S1.AFREQ_unit='Hz';

   S1.vadens_unit='m^2/Hz';

   S1.Dir_unit='degr';

   S1.Dsprdegr_unit='degr';

end

%%  主程序,调用上述函数

file='...............';

ntime=217;

S1=read_swan_S1(file,ntime);

for s=1:S1.location_number;

    for t=1:ntime

        figure('position',[50 50 800 200]);

        plot(S1.AFREQ,S1.Vadens(s,:,t));

        xlabel('Frequence(Hz)','fontsize',10);

        ylabel('variance density(m^2/Hz)')

        print(gcf,'./...............png');

        close

    end

end

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空