我在C ++程序中创建数据,使用zlib.h库写入.gz文件进行数据压缩,然后尝试使用MATLAB中的数据。如何在混合数据时从文件中读取文件?
extern "C"{
#include <zlib.h>
}
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(void){
//Notes
//Minute, second, and hour start at zero
//Day starts at one
gzFile *fp;
fp = (gzFile *)gzopen((char *)"measureinput.dat",(char *)"w9");
int nMe = 1;
int yr = 1980;
int mo = 1;
int dy = 1;
int hr = 1;
int mn = 0;
int se = 0;
float mlon = 20.0;
float mlat = 10.0;
float lshell = 20.0;
float dens = 10.0;
float sig = 1.0;
gzwrite(fp,&nMe,sizeof(int));
gzwrite(fp,&yr,sizeof(int));
gzwrite(fp,&mo,sizeof(int));
gzwrite(fp,&dy,sizeof(int));
gzwrite(fp,&hr,sizeof(int));
gzwrite(fp,&mn,sizeof(int));
gzwrite(fp,&se,sizeof(int));
gzwrite(fp,&mlon,sizeof(float));
gzwrite(fp,&mlat,sizeof(float));
gzwrite(fp,&lshell,sizeof(float));
gzwrite(fp,&dens,sizeof(float));
gzwrite(fp,&sig,sizeof(float));
gzclose(fp);
}
答案 0 :(得分:1)
您可以使用fread在Matlab中读取二进制数据。但是,为此,数据不能被压缩 - 除非您在Matlab中实现解压缩。如果将数据写入的唯一目的是读入Matlab,那么使用gzip是没有意义的。如果您遵循kyamagu的建议使用文本格式,则同样适用;它也不能以压缩形式阅读。
Matlab自己的二进制格式MAT文件确实支持压缩(至少在最近的版本中)。如果压缩对您很重要,那么您可以考虑从C ++代码编写MAT文件。格式记录在http://www.mathworks.de/help/pdf_doc/matlab/matfile_format.pdf。此外,http://www.mathworks.de/help/pdf_doc/matlab/apiext.pdf描述了一个支持编写MAT文件的C / C ++ / Fortran库,它随Matlab一起提供。