资源简介
降雨雷达的时空匹配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控制伺服电机程序
相关资源
-
simuli
nk的S函数实现多智能体一致性 - 电力电子各种电路Matlab仿真
- DTW动态时间规整matlab代码
- 用于生成ask2fsk4fskbpskqpskDLFM时频图数据
- 蚁群算法路径规划避障MATLAB源程序
- 计算一维信号计盒维数matlab程序
- 人工神经网络预测matlab
- 最小二乘法曲线拟合matlab代码
- MATLAB大作业
- 飞行轨迹仿真
- 三参数威布尔分布线性相关法拟合程
- Matlab读取TDMS文件并存储为mat格式
- FW交通均衡求解算法
- matlab打开电脑摄像头动态追踪人脸位
- 捷联惯导matlab程序
- 学生成绩查询系统
- 基于MATLAB的VANET仿真.zip
- PPL锁相环matlab
- 计算SINR的matlab程序,带入参数可以直
- 基于matlab的小车避障仿真
- 最全图像评价性能指标函数matlab
- 图像性能指标matlab版本
- RSSI指纹库
- 图像融合的MATLAB实现
- k均值聚类算方法MATLAB程序
- Matlab+PFH.rar
- 提取水泥路裂缝
- 人群搜索算法SOA的matlab实现
- MATLAB 粒子群图像分割算法
-
MATLAB/Simuli
nk的PMSM的DTC控制仿真
评论
共有 条评论