1、查找所有nan数据并赋新值
Data(isnan(Data))=-9999;
2、获取指定目录下的所有指定类型文件列表
ncFilePath='E:\Sciencetific Data\ET Products\*.nc';
imageList=dir(ncFilePath);%获取该文件夹中所有tif格式的图像
3、获取不带文件后缀的文件名
filename =Monthly_PML_ETa_1981.nc;
filenameWithoutSufix = filename(1:find(filename=='.')-1);
4、数字长度不够指定长度前补充0
aa=num2str(11,'%03d') %不足3位是前面补充0,即011
5、对于一个3维的数据序列data,对其数据求均值,求和
meanarr=mean(data,3); 其中3表示要提取的维数
sumarr=sum(data,3)
6、解方程中的未知数
syms n %定义符号变量
R=1301;P=1968;ET0=882;
result_n=solve(P-R==P*ET0/(P^n+ET0^n)^(1/n)) %方程中只有n是未知数,即可求出来了
7、求导数
syms P ETO n;
R=P-(P*ET0)/(P^n+ET0^n)^(1/n);
dP=diff(R,P,1) %对P求一阶导数,结果为 dP=(ET0*P*P^(n - 1))/(ET0^n + P^n)^(1/n + 1) - ET0/(ET0^n + P^n)^(1/n) + 1
8、对复杂公式进行简洁化显示
用函数 pretty(),就到达了我们平时所见到的显示方式了。
9、读取text中的内容
数据如下所示:
AI_1960.tif,2.44598346323937
AI_1961.tif,1.85174840082156 。。。。
[filename,data]=textread(txtFullPath,'%s %f','delimiter',',')
其中,%s表示读取字符串,%f读取浮点数字,并且用分隔符 逗号 分隔
10. 读取的数据为cell格式转为数字
str2num(cell2mat({'11'}))
11. 数据为cell格式转为string
char({'aa'})
12. MATLAB输出时不要科学计数法
format short g 或者 format long g
13. 获取指定年月内的天数
eomday(年,月);返回的结果就是当前年月内的天数,或者最后一天的排序
14. 获取指定年或月内的天数
dayNumInMonth=datenum(2000,3,1)-datenum(2000,2,1); %获取2月份的天数
dayNumInYear = datenum(2001,1,1)-datenum(2000,1,1); %获取2000年的天数
15.保存矩阵到TIFF地理数据
outputFullPath='E:\test\Vegetation.tif'
latrange=[-90 90]; lonrange=[0 360];
Refference = georasterref('RasterSize', size(data),'Latlim',latrange, 'Lonlim', lonrange);%1地理栅格数据参考对象(类)
geotiffwrite(outputFullPath, flipud(data), Refference);%生成tif文件,可以在arcgis中打开了就。
14.快速获取当前年份的总天数
dayNumInYear=datenum(2000,12,31)-datenum(2000,1,1)+1;
15. Matlab中显示和ArcGIS的现实相差180度
data=(rot90(yearPre,1)); %旋转后,导出为geotiff,GIS可正常显示
imagesc(flipud(data)) %MATLAB中还要翻转一次,和arcgis180°翻转关系
16.已知数据的年内日序号获取年月日
for iyear=1979:1997
pcp_WorldDailyMSWEP=ncread([inDir,num2str(iyear),'.nc'],'precipitation');
for imonth=1:12
startDayIdx=datenum(iyear,imonth,1)-datenum(iyear,1,1)+1; %当前月开始日序号
daysNumInMonth=eomday(iyear,imonth);
endDayIdx=startDayIdx+daysNumInMonth-1; %当前月结束日序号
for iday=startDayIdx:endDayIdx %循环当前月内的所有日期
end
end
end
17.根据全球经纬度和中国经纬度范围获取行列号
全球边界的经纬度范围:[0 360] [-60 60],
中国待提取边界范围是:[70 140] [15 55]
所以,提取中国区域的方式是:
左边界:[70-(0)]/0.25+1=281 右边界:[140-(0)]/0.25=560
上边界:[(60-55)]/0.25+1=21 下边界 :[(60-15)]/0.25=180
18.判断当前文件或文件夹是否存在
if ~exist('路径','dir') %判断文件夹是否存在,不存在就创建一个
mkdir('路径');
end
if ~exist('aa.mat','file') %判断文件是否存在
display('no file'));
end