栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言读取mat文件

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言读取mat文件

读取含有IQ数据的mat文件

前提是导入matlab文件读写库matio.h

添加静态库libmatio.lib、hdf5.lib、szip.lib、zlib1.lib 下载地址

#include

#include "matio.h"
#pragma comment(lib,"libmatio.lib")
#pragma comment(lib,"hdf5.lib")
#pragma comment(lib,"szip.lib")
#pragma comment(lib,"zlib1.lib")

int main(){
	int i=0,j=0;
	mat_t* matfp;
	const char *file;	
	file="data_double_300000.mat";

	
	matfp=Mat_Open(file, MAT_ACC_RDONLY);
	if (NULL == matfp) {
         printf("Error opening MAT file %sn", file);
         return -1;
    }

	matvar_t* matvar_I=NULL;
	matvar_t* matvar_Q=NULL;
	matvar_I=Mat_VarRead(matfp,"I");
	matvar_Q=Mat_VarRead(matfp,"Q");
	if(!matvar_I)
	{
		printf("Error read MatVar: I.n");
		return -1;
	}
	if(!matvar_Q)
	{
		printf("Error read MatVar: Q.n");
		return -1;
	}

	int iDataN=matvar_I->nbytes/matvar_I->data_size;
	double* dI=new double[iDataN];
	double* dQ=new double[iDataN];
	memset(dI,0,iDataN*sizeof(double));
	memset(dQ,0,iDataN*sizeof(double));

    //IQ数据是double类型
	if (matvar_I->data_type == MAT_T_DOUBLE){
		const double* xData_I=static_cast(matvar_I->data);	
		const double* xData_Q=static_cast(matvar_Q->data);
		memcpy(dI,xData_I,iDataN*sizeof(double));
		memcpy(dQ,xData_Q,iDataN*sizeof(double));
    
    //IQ数据是short类型
	}else if(matvar_I->data_type == MAT_T_INT16){
		const short* xData_I=static_cast(matvar_I->data);	
		const short* xData_Q=static_cast(matvar_Q->data);

		for(i=0; i(matvar_fs->data);	
	const double *startfre=static_cast(matvar_startfre->data);	
	const double *stopfre=static_cast(matvar_stopfre->data);	

	double fs=*dfSample;
	double Bandw=fs/2;
	double Startfre=*startfre, Stopfre=*stopfre;
	double band=Stopfre-Startfre;
	double F_c=(Stopfre+Startfre)/2;
	double iGain=0,iAtt=0;

	
	
	Mat_VarFree(matvar_I);
	Mat_VarFree(matvar_Q);
	Mat_VarFree(matvar_fs);
	Mat_VarFree(matvar_startfre);
	Mat_VarFree(matvar_stopfre);
	Mat_Close(matfp);


	if (iDataN < 10000)
	{
		return -1;
	}

    if(dI != NULL)
	{
		delete []dI;
		dI = NULL;
	}

	if(dQ != NULL)
	{
		delete []dQ;
		dQ = NULL;
	}


    return 0;

}
另外:在VS工程中,添加c/c++工程中外部头文件(.h),lib库,dll库的基本步骤

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号