This is interpolateSms.c in view mode; [Download] [Up]
#include "../sms.h" /* function to interpolate two SMS records * * SMS_DATA *pSmsRecord1 sms record 1 * SMS_DATA *pSmsRecord2 sms record 2 * SMS_DATA *pSmsRecordOut sms output record * float fInterpFactor interpolation factor */ int InterpolateSmsRecords (SMS_DATA *pSmsRecord1, SMS_DATA *pSmsRecord2, SMS_DATA *pSmsRecordOut, float fInterpFactor) { int i; int nTraj = MIN (pSmsRecord1->nTraj, MIN (pSmsRecord2->nTraj, pSmsRecordOut->nTraj)); float fFreq1, fFreq2; if (pSmsRecord1->nCoeff != pSmsRecord2->nCoeff || pSmsRecord1->nCoeff != pSmsRecordOut->nCoeff) return -1; /* interpolate the deterministic part */ for (i = 0; i < nTraj; i++) { fFreq1 = pSmsRecord1->pFFreqTraj[i]; fFreq2 = pSmsRecord2->pFFreqTraj[i]; if (fFreq1 == 0) fFreq1 = fFreq2; if (fFreq2 == 0) fFreq2 = fFreq1; pSmsRecordOut->pFFreqTraj[i] = fFreq1 + fInterpFactor * (fFreq2 - fFreq1); pSmsRecordOut->pFMagTraj[i] = pSmsRecord1->pFMagTraj[i] + fInterpFactor * (pSmsRecord2->pFMagTraj[i] - pSmsRecord1->pFMagTraj[i]); } /* interpolate the stochastic part */ if (pSmsRecordOut->pFStocGain) *(pSmsRecordOut->pFStocGain) = *(pSmsRecord1->pFStocGain) + fInterpFactor * (*(pSmsRecord2->pFStocGain) - *(pSmsRecord1->pFStocGain)); if (pSmsRecordOut->pFStocGain) for (i = 0; i < pSmsRecord1->nCoeff; i++) pSmsRecordOut->pFStocCoeff[i] = pSmsRecord1->pFStocCoeff[i] + fInterpFactor * (pSmsRecord2->pFStocCoeff[i] - pSmsRecord1->pFStocCoeff[i]); return 1; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.