This is smsToML.c in view mode; [Download] [Up]
#include "../sms.h" #define USAGE "Usage: smsToML <smsFile> <outputFile>" main (int argc, char *argv[]) { SMSHeader *pSmsHeader; char *pData, *namedata; SMS_DATA smsData; int iError, i, j; float *amps, *freqs, *phs; FILE *fp; if (argc != 3) quit(USAGE); if((iError = readSmsFile(argv[1], &pSmsHeader)) < 0) { if(iError == SMS_NOPEN) quit("cannot open file"); if(iError == SMS_RDERR) quit("read error"); if(iError == SMS_NSMS) quit("not an SMS file"); if(iError == SMS_MALLOC) quit("cannot allocate memory"); quit("error"); } fp = fopen(argv[2],"w"); namedata = (char *)strtok (argv[2],"."); fprintf(fp,"%% This matlab file was generated by smsToML.\n"); fprintf(fp,"%% The principal variables defined below are \n"); fprintf(fp,"%% %s_amps, %s_freqs, ", namedata, namedata); fprintf(fp, "(if applicable) %s_phases and %s_coeffs.\n", namedata, namedata); fprintf(fp,"%% Also defined are header variables and an args string.\n"); fprintf(fp,"%% All variable names are prefixed by '%s_'.\n", namedata); fprintf(fp,"\n%% HEADER INFORMATION:\n"); fprintf(fp,"%s_nrec = %d;\n", namedata, pSmsHeader->nRecords); fprintf(fp,"%s_framerate = %d;\n", namedata, pSmsHeader->iFrameRate); fprintf(fp,"%s_ntraj = %d;\n", namedata, pSmsHeader->nTrajectories); fprintf(fp,"%s_nstoccoeffs = %d;\n", namedata, pSmsHeader->nStochasticCoeff); fprintf(fp,"%s_format = %d;\n", namedata, pSmsHeader->iFormat); fprintf(fp,"%s_stoctype = %d;\n", namedata, pSmsHeader->iStochasticType); fprintf(fp,"%s_origsrate = %f;\n", namedata, pSmsHeader->fOriginalSRate); fprintf(fp,"\n%s_amps = zeros(%s_nrec,%s_ntraj);\n", namedata, namedata, namedata); pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; for(i = 0; i < pSmsHeader->nRecords; i++) { setSmsRecord(pSmsHeader, pData, &smsData); fprintf(fp,"%s_amps(%d,:) = [", namedata, i+1); for(j = 0; j < smsData.nTraj; j++) fprintf(fp," %.2f", smsData.pFMagTraj[j]); fprintf(fp," ];\n"); pData += pSmsHeader->iRecordBSize; } fprintf(fp,"\n%s_freqs = zeros(%s_nrec, %s_ntraj);\n", namedata, namedata, namedata); pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; for(i = 0; i < pSmsHeader->nRecords; i++) { setSmsRecord(pSmsHeader, pData, &smsData); fprintf(fp,"%s_freqs(%d,:) = [", namedata, i+1); for(j = 0; j < smsData.nTraj; j++) fprintf(fp," %.2f", smsData.pFFreqTraj[j]); fprintf(fp,"];\n"); pData += pSmsHeader->iRecordBSize; } if (!(pSmsHeader->iFormat == FORMAT_HARMONIC || pSmsHeader->iFormat == FORMAT_INHARMONIC)) { fprintf(fp,"\n%s_phases = zeros(%s_nrec,%s_ntraj);\n", namedata, namedata, namedata); pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; for(i = 0; i < pSmsHeader->nRecords; i++) { setSmsRecord(pSmsHeader, pData, &smsData); fprintf(fp,"%s_phases(%d,:) = [", namedata, i+1); for(j = 0; j < smsData.nTraj; j++) fprintf(fp," %.2f", smsData.pFPhaTraj[j]); fprintf(fp," ];\n"); pData += pSmsHeader->iRecordBSize; } } if (pSmsHeader->iStochasticType != STOC_NONE) { fprintf(fp,"\n%s_stoccoeffs = zeros(%s_nrec, %s_nstoccoeffs);\n", namedata, namedata, namedata); pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; for(i = 0; i < pSmsHeader->nRecords; i++) { setSmsRecord(pSmsHeader, pData, &smsData); fprintf(fp,"%s_stoccoeffs(%d,:) = [", namedata, i+1); for(j = 0; j < smsData.nCoeff; j++) fprintf(fp," %.4f", smsData.pFStocCoeff[j]); fprintf(fp," ];\n"); pData += pSmsHeader->iRecordBSize; } fprintf(fp,"\n%s_stocgain = zeros(1, %s_nrec);\n", namedata, namedata); pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; for(i = 0; i < pSmsHeader->nRecords; i++) { setSmsRecord(pSmsHeader, pData, &smsData); fprintf(fp,"%s_stocgain (%d) = %.4f ;\n", namedata, i+1, *(smsData.pFStocGain)); pData += pSmsHeader->iRecordBSize; } } fprintf(fp,"\ndisp('Defined variables %s_*. Say whos for details.');\n", namedata); exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.