//-----------------データの保存----------------------// 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; }
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); }