資源簡介
降雨雷達的時空匹配matlab代碼,將獲取到的風速數據與將于數據進行時空匹配,并驗證奇數據準確性

代碼片段和文件信息
%?第二步,根據雷達數據時間找到分別在該時間前后的兩個ECMWF數據文件,如14:05的雷達數據,則找到12:00和18:00的文件
%?第三步,根據雷達數據的經緯度,分別在兩個文件中找到距離該位置最近的四個角經緯度數據,做反距離加權,這樣可以得到兩個值
%?第四步,將這兩個值根據時間做反距離加權,就可以得到與雷達數據匹配的ECMWF數據(并沒有完全按照這個要求來啊,好像也沒事吧,反正結果就是好了)
%?close?all
%?clear%還有專門的netcdf工具包。。。2021b之后的matlab版本可以不用安裝了吧,只要用ncread就能讀取了
%?clc%nc文件轉換成mat文件——save出去就是mat文件
%?file2??=dir(‘E:\m\nc\‘);%第一個第二個出來是.和..
%?buoy_4=load(‘buoy_012.dat‘);%包含了時分秒,波高m,公尺波浪周期s,最大浪高的浪向or風向or波向,用360°表示?
%?波高、波長、波周期、波向
fid=fopen(‘match_data2010_1.dat‘‘w‘);
%?folder=‘E:\m‘;
%?files=dir([folder?‘\*.hdf‘]);%也可以改寫成folder=‘E:\m\‘;files=dir([folder?‘*.hdf‘]);的吧
%?h=length(files);
filename=‘2A25.20100102.69110.7.hdf‘;%降雨雷達文件,先選用的是第2天的文件
hour=hdfread(filename‘Hour‘);
minute=hdfread(filename‘Minute‘);
lati=hdfread(filename‘Latitude‘);
longi=hdfread(filename‘Longitude‘);
[row?~]?=?size(longi);%此處賦值給‘column’的值似乎未使用。請考慮將其替換為~,因為后面單獨定義了一個column
%?for?i=1:length(longi(:1))??
day=hdfread(filename‘DayOfMonth‘);
filename1=‘E:\m\nc\2010-1-00.nc‘;
u?=?ncread(filename1‘u10‘);
v?=?ncread(filename1‘v10‘);
ec00=sqrt(u.^2+v.^2);
EC00=ec00(::1);
filename2=‘E:\m\nc\2010-1-06.nc‘;
u6?=?ncread(filename2‘u10‘);
v6?=?ncread(filename2‘v10‘);
ec06=sqrt(u6.^2+v6.^2);
EC06=ec06(::1);
filename3=‘E:\m\nc\2010-1-12.nc‘;
u12?=?ncread(filename3‘u10‘);
v12?=?ncread(filename3‘v10‘);
ec12=sqrt(u12.^2+v12.^2);
EC12=ec12(::1);
filename4=‘E:\m\nc\2010-1-18.nc‘;
u18?=?ncread(filename4‘u10‘);
v18?=?ncread(filename4‘v10‘);
ec18=sqrt(u18.^2+v18.^2);
EC18=ec18(::1);
time=hour+minute/60;%這個時間是個數組,在執行到69行那個與或的語句時,就出錯了,必須為一個整的數值,加個循環吧???
%?if?0%-------------------------------------------------------------------------------------------------------------??
%%這部分是循環的,可以先不看吧。。。
%?column?=?[17181921222425262829313233];%
a=hdfread(filename‘rainAve‘);
column=a(:[17181921222425262829313233]2);%寫成這種格式嗎?
%?rain=a(:[17181921222425262829313233]2);%經緯度類似吧,下面原先寫的是錯的
%?la=lati(:[17181921222425262829313233]);
????for?i=1:row%把經緯度和時間分別取出來進行時空插值
????????for?j?=?1:13%對應上面的13列之前是1:12
%?????????????lat=
????????????lat?=?lati(icolumn(j));%索引超出矩陣維度,就是前面入射角對應的行列數沒有寫完整導致的
%下標索引必須為正整數類型或邏輯類型,問題就出在column(j)這里,看一看變量空間就發現要不是0(不是正數),要不是0.222(不是整數)
????????????lon?=?longi(icolumn(j));%???這里應該是longi吧,之前寫的是lon?=?lati(icolumn(j));
%?????????????警告:賦值給變量‘lat’‘lon’的值可能未使用,這是因為后面又定義了一個具體的經緯度值,這個循環是之后各個點的,可暫時不看
????????????time1?=?time(i);%先不加分號吧,這樣就能使時間變成了一個單獨的數的形式了,而不是一整個數組了
%?????????????if?time1>=12?&&?time1<18
%?????????????end
if?time1<6%這里的time表示的是pr的啊,跟ecmwf的不一樣,所以這部分還是不能省略掉
????????????dt1=time1;
????????????dt2=6-time1;
????????????ecdata1=EC00;
????????????ecdata2=EC06;
???????????elseif?time1>=6?&&?time1<12%||?和?&&?運算符的操作數必須能夠轉換為邏輯標量值time必須是一個數,你這里都成數組了
???????????????dt1=time1-6;
???????????????dt2=12-time1;
???????????????ecdata1=EC06;???
???????????????ecdata2=EC12;
???????????elseif?time1>=12?&&?time1<18
???????????????dt1=time1-12;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4894??2018-07-25?11:33??shiyishi.m
- 上一篇:PID神經網絡.m
- 下一篇:plc控制伺服電機程序
評論
共有 條評論