• 大小: 1.15MB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2023-11-18
  • 语言: Matlab
  • 标签: matlab  

资源简介

matlabreadgrib用matlab读grib数据grib数据是气象常用数据-read_grib.rar
这个插件是用来读气象数据的grib 数据的希望对大家有用。附件1 是插件,附件2是.m 文件,读ERA-40日地面气压。将附件1解压 放在toobox 下面,然后添加上路径,file——set path——add with subfolders 就行了

资源截图

代码片段和文件信息

/*

BDS_unpack_mex5.c
GRiB Binary Data Section decoding
Relevant code from W. Ebisuzaki NCEP

30 Aug 2005
   fixed alloc sizeof bug noted by several users under MATLAB7/R14
   Both Felipe Nievinski and Julien Choisnard noticed that seg viols
   occured because of the sizeof(mxREAL).  These have been changed to
   size(float).  


*/

#include 
#include 
#include “mex.h“

/* PROTOTYPES */
void BDS_unpack(float *flt unsigned char *bits unsigned char *bitmap
        int n_bits int n double ref double scale);

/************************************************************

  ####     ##     #####  ######  #    #    ##     #   #
 #    #   #  #      #    #       #    #   #  #     # #
 #       #    #     #    #####   #    #  #    #     #
 #  ###  ######     #    #       # ## #  ######     #
 #    #  #    #     #    #       ##  ##  #    #     #
  ####   #    #     #    ######  #    #  #    #     #

************************************************************/

void mexFunction(int            nlhs
                 mxArray      *plhs[]
                 int            nrhs
                 const mxArray *prhs[])
{
   unsigned char *databits *bitmap;

   int n_bitsnimbnb;
   double refscaleNaN=mxGetNaN()*tempd;
   FILE *tempfile*fopen();
   float *tempf;
   
   bool bms_empty;
   
   databits=(unsigned char *)mxGetData(prhs[0]);
   bms_empty=mxIsEmpty(prhs[1]);

   if(bms_empty)
      bitmap=NULL;
   else
      bitmap=(unsigned char *)mxGetData(prhs[1]);
   
   n_bits=mxGetScalar(prhs[2]);
   n=mxGetScalar(prhs[3]);
   ref=mxGetScalar(prhs[4]);
   scale=mxGetScalar(prhs[5]);
   
   /* tempf=(float *)mxMalloc(sizeof(mxREAL)*n); */
   /* sizeof(mxREAL) caused seg viol in R14 */
   tempf=(float *)mxMalloc(sizeof(float)*n);

   mb=mxGetM(prhs[0]);
   nb=mxGetN(prhs[0]);

   BDS_unpack(tempf databits bitmap n_bits n ref scale);
   
   plhs[0]=mxCreateDoubleMatrix(n1mxREAL);
   tempd=mxGetPr(plhs[0]);
   for (i=0;i   mxSetPr(plhs[0]tempd);
   
   return;
}

/* for simple unpacking of a grid */
/* wesley ebisuzaki NCEP wgrib */
/* http://wesley.wwb.noaa.gov */

/* undefined value -- if bitmap */
#define UNDEFINED 9.999e20

void BDS_unpack(float *flt unsigned char *bits unsigned char *bitmap
int n_bits int n double ref double scale) {

    int i j k;
    unsigned int map_mask bit_mask;

    map_mask = bit_mask = 128;

    for (i = 0; i < n; i++) {
if (bitmap) {
    j = (*bitmap & map_mask);
    if ((map_mask >>= 1) == 0) {
map_mask = 128;
bitmap++;
    }
    if (j == 0) {
*flt++ = UNDEFINED;
continue;
    }
}

j = 0;
k = n_bits;
while (k) {
    if (k >= 8 && bit_mask == 128) {
j = 256 * j + *bits;
bits++;
k -= 8;
    }
    else {
        j = j + j + ((*bits & bit_mask) != 0);
if ((bit_mask >>= 1) == 0) {
    bits++;
    bit_mask = 128;
}
k--;
    }
}
*flt++ = ref + scale*j;
   }
   return;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12292  2004-10-24 20:04  read_grib\read_grib1.4.0\.DS_Store

     文件       2953  2005-09-01 02:02  read_grib\read_grib1.4.0\BDS_unpack_mex5.c

     文件       3643  2005-09-01 01:12  read_grib\read_grib1.4.0\BDS_unpack_mex5.cv

     文件       6656  2007-10-15 11:16  read_grib\read_grib1.4.0\BDS_unpack_mex5.dll

     文件       6578  2005-09-22 04:57  read_grib\read_grib1.4.0\BDS_unpack_mex5.mexglx

     文件       9720  2005-09-01 01:13  read_grib\read_grib1.4.0\BDS_unpack_mex5.mexmac

     文件       7119  2005-08-31 22:25  read_grib\read_grib1.4.0\ECMWF128.tab

     文件       4203  2005-08-31 22:25  read_grib\read_grib1.4.0\ECMWF160.tab

     文件       9850  2005-08-31 22:24  read_grib\read_grib1.4.0\NCEPOPER.tab

     文件      10083  2005-08-31 22:24  read_grib\read_grib1.4.0\NCEPREAN.tab

     文件        221  2005-09-01 09:33  read_grib\read_grib1.4.0\private\bitshift2.m

     文件        237  2005-09-01 09:33  read_grib\read_grib1.4.0\private\bitshift3.m

     文件       1708  2005-09-01 10:05  read_grib\read_grib1.4.0\private\extract_grib.m

     文件        818  2005-09-01 10:10  read_grib\read_grib1.4.0\private\find_grib_marker.m

     文件        453  2005-09-01 10:06  read_grib\read_grib1.4.0\private\get_bds.m

     文件        374  2005-09-01 10:07  read_grib\read_grib1.4.0\private\get_bms.m

     文件       2089  2005-09-01 10:06  read_grib\read_grib1.4.0\private\get_gds.m

     文件        272  2005-09-01 10:18  read_grib\read_grib1.4.0\private\Get_Parameter.m

     文件       1892  2005-09-01 10:08  read_grib\read_grib1.4.0\private\get_pds.m

     文件       4974  2005-09-01 10:18  read_grib\read_grib1.4.0\private\gribhelp.m

     文件       1201  2005-09-01 09:30  read_grib\read_grib1.4.0\private\ibm2flt.m

     文件        439  2005-09-01 09:33  read_grib\read_grib1.4.0\private\int2.m

     文件       1765  2005-09-01 09:32  read_grib\read_grib1.4.0\private\int3.m

     文件        457  2005-09-01 10:19  read_grib\read_grib1.4.0\private\is_grib_file.m

     文件       1858  2005-09-01 10:18  read_grib\read_grib1.4.0\private\levels.m

     文件      53215  2005-09-01 10:09  read_grib\read_grib1.4.0\private\Set_Parameter_Table.m

     文件       1248  2005-09-01 10:14  read_grib\read_grib1.4.0\private\table0.m

     文件        353  2005-09-01 10:15  read_grib\read_grib1.4.0\private\table1.m

     文件       3181  2005-09-01 10:16  read_grib\read_grib1.4.0\private\table3a.m

     文件        299  2005-09-01 10:16  read_grib\read_grib1.4.0\private\table4.m

............此处省略19个文件信息

评论

共有 条评论