Example #1
0
//-----------------データの保存----------------------//
void Solver::save_data(complex<double> *data, string name){
	ofstream out = WriteOpen(name);

	for(int k=-1; k<2; k++)
		for(int i=0; i<mField->getNx(); i++)
			for(int j=0; j<mField->getNy(); j++)
				out << data[index(i,j, k)] << endl;

}
int AfgBasWriter::Write(SMRTSequence &seq) {
    if (firstRecord){
        WriteHeader();
        firstRecord = false;
    }
    WriteOpen(seq);
    WriteIdentifier(seq);
    WriteBases(seq);
    WriteQualities(seq);
    WriteClose();
    return 1;
}
Example #3
0
void Solver::MiePrint(complex<double>* p, string name){
	printf("Mie print\n");
	ofstream ofs = WriteOpen(name+"Mie");

	if(ofs) {
		for(int i=0; i<=180; i++){
			double _x = 1.2*lambda_s*cos((180-i)*PI/180) + mField->getNx()/2;
			double _y = 1.2*lambda_s*sin((180-i)*PI/180) + mField->getNy()/2;
			double _val = bilinear_interpolation(p,_x,_y);
			ofs << _val << endl;
		}
		printf("output finished\n");
	}
	else{
		printf("No file");
	}
}
BOOL CPackFiles::AddFile(CAbstractFile* pcFile, char* szFileName)
{
	CPackFile*		pcPackFile;
	CFileCopier		cCopier;
	BOOL			bResult;
	
	pcPackFile = WriteOpen(szFileName);
	if (!pcPackFile)
	{
		return FALSE;
	}

	pcPackFile->mbBasicFileMustFree = FALSE;
	bResult = cCopier.Copy(pcFile, pcPackFile);
	pcPackFile->Close();
	pcPackFile->Kill();
	return bResult;
}
int main(int argc,char * argv[])
{

	if (argc!=3)
	{
		printf("OldUbm2NewUbm.exe oldubm newubm\n");
		exit(0);
	}
	
	GaussMixModel * m_pGmmModel;
	GMMFileHeaderOld  ModelHeaderOld;					// Header *header; 模型文件的文件头
	GMMFileHeaderNew  ModelHeaderNew;
	FILE *fpModel;
	ReadOpen(fpModel,argv[1]);

	fread(&ModelHeaderOld,sizeof(GMMFileHeaderOld),1,fpModel);
	ASSERT3(ModelHeaderOld.nDim>0, "Error in model file %s : nDim<0!",argv[1]);
	ASSERT3(ModelHeaderOld.nMixNum>0, "Error in model file %s : nMixNum<0!",argv[1]);
	ASSERT3(ModelHeaderOld.nModelNum>0, "Error in model file %s : nModelNum<0!",argv[1]);

	int m_nVecSize = ModelHeaderOld.nDim;
	int m_nVecSize4 = ALIGN_4F(m_nVecSize);
	int m_nMixNum  = ModelHeaderOld.nMixNum;		
	int m_nModelNum  = ModelHeaderOld.nModelNum;

	ASSERT3(m_nModelNum==1,"m_nModelNum=%d\n",m_nModelNum);

	m_pGmmModel = (GaussMixModel *)Malloc(m_nModelNum,sizeof(GaussMixModel),false);

	for(int i=0;i<m_nModelNum;i++)
	{
		// 分配 GMM 模型
		AllocGaussMixModel(&m_pGmmModel[i],m_nMixNum,m_nVecSize4);

		m_pGmmModel[i].nMixNum = m_nMixNum;

		// 读出weight
		fread(m_pGmmModel[i].pfWeight,sizeof(float),m_nMixNum,fpModel);

		// 读出均值,斜方差,mat
		for(int m=0;m<m_nMixNum;m++)
		{
			m_pGmmModel[i].pGauss[m].nDim = m_nVecSize;

			fread(m_pGmmModel[i].pGauss[m].pfMean,sizeof(float),m_nVecSize4,fpModel);
			fread(m_pGmmModel[i].pGauss[m].pfDiagCov,sizeof(float),m_nVecSize4,fpModel);
			fread(&m_pGmmModel[i].pGauss[m].dMat,sizeof(double),1,fpModel);
		
			// 如果mat值大于零,可能模型有问题,报警
			if (m_pGmmModel[i].pGauss[m].dMat>=0.0)
				printf("Warning : m_pGmmModel[%d].pGauss[%d].dMat=%.3f!\n",i,m,m_pGmmModel[i].pGauss[m].dMat);
		}
	}
	fclose(fpModel);


	ModelHeaderNew.nMixNum=m_nMixNum;
	ModelHeaderNew.nVecSize=m_nVecSize;
	ModelHeaderNew.nVecSizeStore=m_nVecSize4;
	ModelHeaderNew.nFeatKind=ModelHeaderOld.nMfccKind;
	ModelHeaderNew.nTotalParamSize=sizeof(float)*m_nMixNum*(m_nVecSize4*2+2);

	WriteOpen(fpModel,argv[2]);
	fwrite(&ModelHeaderNew,sizeof(GMMFileHeaderNew),1,fpModel);
	fseek(fpModel,FILE_HEADER_SIZE,SEEK_SET);
	int nNumRead;
	nNumRead=fwrite(m_pGmmModel[0].pfWeight,sizeof(float),m_nMixNum,fpModel);
	if (nNumRead!=m_nMixNum)
	{
		fclose(fpModel);	
		exit(1);
	}
	nNumRead=fwrite(m_pGmmModel[0].pfMeanBuf,sizeof(float),m_nVecSize4*m_nMixNum,fpModel);
	if (nNumRead!=m_nVecSize4*m_nMixNum)
	{
		fclose(fpModel);	
		exit(1);
	}
	nNumRead=fwrite(m_pGmmModel[0].pfDiagCovBuf,sizeof(float),m_nVecSize4*m_nMixNum,fpModel);
	if (nNumRead!=m_nVecSize4*m_nMixNum)
	{
		fclose(fpModel);	
		exit(1);
	}
	float temp;
	for (int i=0;i<m_nMixNum;i++){
		temp=float(m_pGmmModel[0].pGauss[i].dMat);
		fwrite(&temp,sizeof(float),1,fpModel);
	}
	fclose(fpModel);
	FreeGaussMixModel(m_pGmmModel,1);
	
}