clc; clear all; close all; %% 读取数据 path1='C:\Users\86180\Desktop\NC数据\2022.1.nc'; v10=double(ncread(path1,'v10')); %读取v10类型的nc文件 u10=double(ncread(path1,'u10')); %读取u10类型的nc文件 nlon=double(ncread(path1,'longitude')); %读取经度变量 nlat=double(ncread(path1,'latitude')); %读取纬度变量 %% 可视化 [mlat,mlon]=meshgrid(nlat,nlon); day=24; %展示第24天的数据 v_day = v10(:,:,day); u_day = u10(:,:,day); P = sqrt(v_day.^2 + u_day.^2); %投影类型 'Miller','hammer-aitoff','Equidistant Cylindrical' m_proj('Equidistant Cylindrical','lat',[-40 50],'lon',[-20 160]); % m_contourf(mlon,mlat,P,'linestyle','none'); %等值线 ---类似于插值后的效果 colormap(flipud(m_colmap('jet')));%设置颜色legend colormap(m_colmap('jet',10)); % colorbar hold on; shading flat; m_coast('line','Color', [.0 .0 .0]);% 只保留大陆轮廓线line;轮廓线的颜色 m_coast('patch',[0.5 0.5 0.5]);%m_coast('color','k'); % m_quiver(mlon,mlat,u_day,v_day,'color','k'); % 添加风场矢量的方向箭头 % 格网格式设置 m_grid('linestyle','none','box','fancy','tickdir','out','LineWidth',0.5); %% 添加事故路线(并插值) % 读取数据 % data1=xlsread('E:\新任务\数据\三航线.xlsx','烟台-印尼'); % lat1=data1(:,1); % lon1=data1(:,2); data2=xlsread('E:\新任务\数据\三航线.xlsx','烟台-澳大利亚'); lat2=data2(:,1); lon2=data2(:,2); % data3=xlsread('E:\新任务\数据\三航线.xlsx','青岛-乌克兰'); % lat3=data3(:,1); % lon3=data3(:,2); % 插值 % lon1_interp = linspace(min(lon1), max(lon1), 100); % lat1_interp = interp1(lon1, lat1, lon1_interp, 'linear'); % G1=[]; % % % for i=1:100 % % % % 找到最接近指定经纬度坐标的网格点 % [~, lon1_idx] = min(abs(nlon - lon1_interp(i))); % [~, lat1_idx] = min(abs(nlat - lat1_interp(i))); % % % 提取对应的风险值 % % G1 = [G1 P(lon1_idx, lat1_idx)]; % end % % % 在地图上绘制所选择的点 % m_scatter(lon1_interp, lat1_interp,[],G1,'filled'); % hold on % m_plot(lon1_interp, lat1_interp, 'linewidth', 0.5, 'color', 'k'); % hold on % % 插值 lon2_interp = linspace(min(lon2), max(lon2), 400); lat2_interp = interp1(lon2, lat2, lon2_interp, 'spline'); G2=[]; for i=1:400 % 找到最接近指定经纬度坐标的网格点 [~, lon2_idx] = min(abs(nlon - lon2_interp(i))); [~, lat2_idx] = min(abs(nlat - lat2_interp(i))); % 提取对应的风险值 G2 = [G2 P(lon2_idx, lat2_idx)]; end % 在地图上绘制所选择的点 m_scatter(lon2_interp, lat2_interp,[],G2,'filled'); hold on m_plot(lon2_interp, lat2_interp, 'linewidth', 0.5, 'color', 'k'); hold on % % 插值 % lon3_interp = linspace(min(lon3), max(lon3), 400); % lat3_interp = interp1(lon3, lat3, lon3_interp, 'linear'); % G3=[]; % % % for i=1:400 % % % % 找到最接近指定经纬度坐标的网格点 % [~, lon3_idx] = min(abs(nlon - lon3_interp(i))); % [~, lat3_idx] = min(abs(nlat - lat3_interp(i))); % % % 提取对应的风险值 % % G3 = [G3 P(lon3_idx, lat3_idx)]; % end % % % m_scatter(lon3_interp, lat3_interp,[],G3,'filled'); % hold on % % 在地图上绘制所选择的点 % % hold on % m_plot(lon3_interp, lat3_interp, 'linewidth', 0.5, 'color', 'k'); title({'2022年1月三条航线风场图',''},'fontsize',14,'fontweight','bold'); hh=colorbar('h'); set(hh,'tickdir','out'); xlabel(hh,'Wind m/s'); hold off;
现在根据这个代码,插值出来数据有错误,请求大神帮我看看如何修改一下,数据文件见下一个博客