⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user_predict_tide.m

📁 MATLAB语言下的(有源码):Mike Zero系列软件的前后处理 GE中岸线与MIKE岸线相互转换 Mapinfo与MIKE中数据相互转换.(对学习MIKE与学习MATLAB编程人皆有帮助,且有说
💻 M
字号:
function user_predict_tide(UserPath)
%生成mike所需dfs1或dfs0
[StationNum,TideConst_All,OutputFileName,LatLon]=ReadData(UserPath);
Fid_Output=fopen(OutputFileName,'w');
DataType=2;
TempVar1=inputdlg({'开始年份','开始月份','开始日期','开始时间(小时)','时间间隔(小时)','预报总时间步长','平均海平面'},'时间设置',1,{num2str(year(now)),num2str(month(now)),num2str(day(now)),num2str(hour(now)),'1','24','0'});
TempVar2=str2num(char(TempVar1));
TempVar2=TempVar2';
StartTime=TempVar2(1:4);
TimeStep=TempVar2(5);
TotalNum=TempVar2(6);
DataAverage=TempVar2(7);
H_Wait=waitbar(0,'计算中,请稍候。。。。。。');
for c1=1:StationNum
    TempTideConst=TideConst_All{c1}.Data;
    TempResult=TidePredict_Main(DataType,StartTime,TimeStep,TotalNum,TempTideConst,DataAverage);
    Result(:,c1)=TempResult(:,2);
    if c1==1
        AllTime=TempResult(:,1);
    end
    waitbar(c1./StationNum,H_Wait);
end
%%
StartTime=datenum([StartTime 0 0]);
%%
if StationNum>1
    %%
    fprintf(Fid_Output,'Title	%s\n',OutputFileName);
    fprintf(Fid_Output,'Time	%s	%s	%.0f	%.6f\n',datestr(StartTime,29),datestr(StartTime,13),TotalNum,TimeStep.*60.*60);
    fprintf(Fid_Output,'NoGridPoints	%.0f\n',StationNum);
    fprintf(Fid_Output,'Spacing	2475.74\n');
    fprintf(Fid_Output,'NoDynamicItems	1\n');
    fprintf(Fid_Output,'Item	Predicted	Water Level	meter\n');
    fprintf(Fid_Output,'Delete	-1E-030\n\n');
    for c1=1:TotalNum
        fprintf(Fid_Output,'tstep	%.0f\n',c1);
        for c2=1:StationNum
            fprintf(Fid_Output,'%.5f	\n',Result(c1,c2));
        end
        fprintf(Fid_Output,'\n');
    end
else
    fprintf(Fid_Output,'Station:%.6f,%.6f\n',LatLon(1),LatLon(2));
    fprintf(Fid_Output,'Time	Water Level\n');
    fprintf(Fid_Output,'Unit	100000	1000	0\n');
    for c1=1:TotalNum
        for c2=1:StationNum
            fprintf(Fid_Output,'%s	%.5f\n',datestr(AllTime(c1),31),Result(c1,c2));
        end
    end
end
%%
close(H_Wait);
fclose(Fid_Output);
%%
function [StationNum,TideConst_All,OutputFileName,LatLon]=ReadData(UserPath)
[FileName,InputPath]=uigetfile(strcat(UserPath,'*.dat'),'r');
InputFileName=strcat(InputPath,FileName);
OutputFileName=strcat(InputPath,'ForMikeZero_',FileName(1:length(FileName)-3),'txt');
AllConst=load(InputFileName,'-ascii');
[StationNum,N]=size(AllConst);
if N~=22
    error('调和常数数据列数不等于22,数据缺失!');
end
%O1、K1、M2、S2、M4、MS4、P1、Q1、N2、K2十个分潮
LatLon=min(AllConst(:,1:2));
for c1=1:StationNum
    H_Const=AllConst(c1,3:2:N);
    g_Const=AllConst(c1,4:2:N);
    TideConst_All{c1}.Data=[H_Const',g_Const'];
    TideConst_All{c1}.Lat=AllConst(c1,1);
    TideConst_All{c1}.Lon=AllConst(c1,2);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -