2744557306 发表于 2023-11-12 11:13

matlab 画等温线

解析代码:clear; close all;这两行清空MATLAB的工作区,并关闭所有图形窗口。fphn=fopen('hunan.txt','r');

hnb=fgetl(fphn);

hnmap=fscanf(fphn,'%f %f',);

fclose(fphn);这部分打开名为 'hunan.txt' 的文件,读取文件中的湖南省的经纬度数据。fgetl 用于读取文件的第一行,而 fscanf 用于读取文件的剩余部分。hnmap 存储了湖南省59个位置的经纬度,每一列对应一个位置。文件的每一行应包含两个浮点数。hnmap=hnmap';

xa=hnmap(:,);

ya=hnmap(:,);

这里对 hnmap 进行了转置,然后将经度和纬度分别存储在 xa 和 ya 中。fp=fopen('LATLON57.txt','r');

LL57=fscanf(fp,'%d %f %f',);

fclose(fp);

这部分打开名为 'LATLON57.txt' 的文件,读取文件中的湖南省97个县的编号和经纬度数据。LL57 存储了97个县的相关信息,每一列对应一个县。文件的每一行应包含一个整数和两个浮点数。LL57=LL57';

x=LL57(:,)/10;

y=LL57(:,)/10;这里对 LL57 进行了转置,然后将经度和纬度分别存储在 x 和 y 中。在这里,经度和纬度都除以10,可能是由于数据单位不同而进行的缩放。fpy=fopen('etw00100.txt','r');

ymd57=fscanf(fpy,'%d',);

yu97=fscanf(fpy,'%d %f %f',);

fclose(fpy);这部分打开名为 'etw00100.txt' 的文件,读取文件中的湖南省97个县的温度数据。yu97 存储了97个县的温度信息,每一列对应一个县。文件的每一行应包含一个整数和两个浮点数。yu97=yu97';

z=yu97(:,);这里对 yu97 进行了转置,然后将温度数据存储在 z 中。hold on;

plot(xa,ya,'.','markersize',5,'color','red');这部分开始绘制图形,用红色的小点表示湖南省的边界。plot(x,y,'.','markersize',6);这部分继续绘制图形,用蓝色的小点表示湖南省97个县的位置。=meshgrid(linspace(min(x),max(x),25),linspace(min(y),max(y),25));

zi=griddata(x,y,z,xi,yi,'cubic');

这里创建了一个网格,然后使用 griddata 进行三维数据插值,得到 zi 表示的湖南省97个县的温度分布。linspace 用于生成指定范围内的等间隔数据。hold on;

=contour(xi,yi,zi,'b-');这部分绘制等值线图,表示湖南省97个县的温度等值线。contour 用于画等值线,xi 和 yi 是插值后的网格,zi 是温度数据,'b-' 表示蓝色实线。clabel(c,h);

hold off;这里用于在等值线上标注温度值,然后通过 hold off 结束图形的绘制。
请注意,代码中有一个拼写错误,i 应该是 ;,即 hold off;i 应该为 hold off;。


最后结果图如下:


具体附件代码如下:





页: [1]
查看完整版本: matlab 画等温线