заново инициализируем, если параметр ширины
if(inquad == NULL) inquad = matrix(1,fcount,l.MAXBAR); if(power == NULL) power = matrix(1,fcount,1.MAXBAR); for(k = 1 ; k <= fcount; k++) { filter[k- 1] .apply (cls, inphase[k] , inquad[k], nb); for(cb = 1; cb <= nb; cb++) power [k] [cb] = (inphase [k] [cb] * inphase [k] [cb] + inquad [k] [cb] * inquad [k] [cb] ) / filter[k- 1].period(); } // сохраняем спектральный анализ выборки в файл // эта процедура проводится для отладки // #define WRITESAMPLE #ifdef WRITESAMPLE FILE *fil = fopen("test.dat", "wt"); for(cb = nb- 1200; cb < nb; cb++) { domperndx = 0 ; peakpower = - 1.0; for(k = 1; k <= fcount; k++) ( if(power[k][cb] > peakpower) { peakpower = power[k] [cb] ; domperndx = k; } ) phase = (180.0 / PI) * atan2 (inquad [domperndx] [cb] , inphase[domperndx] [cb]); for(k = 1; k <= fcount; k++) ( if (power [k] [cb] > 0.90 * peakpower) fprintf(fil, " **"); else if (power[k][cb] > 0.75 * peakpower) fprintf(fil, " ++"); else if (power[k][cb] > 0.5 * peakpower) fprintf(fil, " + "); else fprintf(fil, " "); ) fprintf(fil, "%4d %7d %7d %7d %8.1f\n", (int)filter[domperndx- 1].period(), (int)(inphase[domperndx] [cb]), (int)(inquad[domperndx] [cb]), (int)phase, cls [cb]); } fclose(fil); exit(0); #endif // используется для отладки сигналов // #define SIGNALDEBUG #ifdef SIGNALDEBUG FILE *fil = fopen("testsig.dat" , "wt"); #endif