gpt4 book ai didi

c++ - 在 MATLAB 中打开包含混合数据的 .gz 文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:21 24 4
gpt4 key购买 nike

我在 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);
}

最佳答案

您可以使用 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 一起提供。

关于c++ - 在 MATLAB 中打开包含混合数据的 .gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com