annotate saitools/findintervals_sai.c @ 0:5242703e91d3 tip

Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author tomwalters
date Fri, 20 May 2011 15:19:45 +0100
parents
children
rev   line source
tomwalters@0 1 /*
tomwalters@0 2 Copyright (c) Applied Psychology Unit, Medical Research Council. 1993
tomwalters@0 3 ===========================================================================
tomwalters@0 4
tomwalters@0 5 Permission to use, copy, modify, and distribute this software without fee
tomwalters@0 6 is hereby granted for research purposes, provided that this copyright
tomwalters@0 7 notice appears in all copies and in all supporting documentation, and that
tomwalters@0 8 the software is not redistributed for any fee (except for a nominal
tomwalters@0 9 shipping charge). Anyone wanting to incorporate all or part of this
tomwalters@0 10 software in a commercial product must obtain a license from the Medical
tomwalters@0 11 Research Council.
tomwalters@0 12
tomwalters@0 13 The MRC makes no representations about the suitability of this
tomwalters@0 14 software for any purpose. It is provided "as is" without express or
tomwalters@0 15 implied warranty.
tomwalters@0 16
tomwalters@0 17 THE MRC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
tomwalters@0 18 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
tomwalters@0 19 THE A.P.U. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
tomwalters@0 20 OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
tomwalters@0 21 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
tomwalters@0 22 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
tomwalters@0 23 SOFTWARE.
tomwalters@0 24 */
tomwalters@0 25
tomwalters@0 26 /*------------------------------------------------------------------------*/
tomwalters@0 27
tomwalters@0 28 /* findintervals_sai.c
tomwalters@0 29 * -----------------------
tomwalters@0 30 *
tomwalters@0 31 * M.Akeroyd. Summer 1993. Revised Winter 1994.
tomwalters@0 32 */
tomwalters@0 33
tomwalters@0 34
tomwalters@0 35 #include <stdio.h>
tomwalters@0 36 #include <string.h>
tomwalters@0 37 #include <stdlib.h>
tomwalters@0 38
tomwalters@0 39 #include "tip.h"
tomwalters@0 40
tomwalters@0 41
tomwalters@0 42
tomwalters@0 43 extern struct Peak peak[MAX_PEAKS]; /* all channels */
tomwalters@0 44 extern short interval[MAX_CHANNELS][MAX_DATA];
tomwalters@0 45 extern short clip[MAX_CHANNELS];
tomwalters@0 46
tomwalters@0 47 extern int weightflag;
tomwalters@0 48
tomwalters@0 49
tomwalters@0 50
tomwalters@0 51 /*------------------------------------------------------------------------*/
tomwalters@0 52
tomwalters@0 53
tomwalters@0 54 void find_intervals(int total_peaks, int channel, int maximum_interval)
tomwalters@0 55 {
tomwalters@0 56 /* WARNING! Reverse */
tomwalters@0 57
tomwalters@0 58 int gap_samples;
tomwalters@0 59 int n;
tomwalters@0 60
tomwalters@0 61
tomwalters@0 62 for(n=2; n <= total_peaks; n++){
tomwalters@0 63
tomwalters@0 64 gap_samples = peak[n-1].sample - peak[n].sample;
tomwalters@0 65 if (gap_samples >= maximum_interval)
tomwalters@0 66 gap_samples = maximum_interval -1;
tomwalters@0 67 interval[channel][gap_samples]++;
tomwalters@0 68
tomwalters@0 69 /*---------------------------------*/
tomwalters@0 70 /* weighting options */
tomwalters@0 71
tomwalters@0 72 if (weightflag == OFF)
tomwalters@0 73 interval[channel][gap_samples]++;
tomwalters@0 74 else if (weightflag == NORMAL_WEIGHTING)
tomwalters@0 75 interval[channel][gap_samples] += (short) (peak[n-1].mag + peak[n].mag) / 2 ;
tomwalters@0 76 else if (weightflag == LOG_WEIGHTING)
tomwalters@0 77 interval[channel][gap_samples] += (short) log((peak[n-1].mag + peak[n].mag)/2)/log(10.0);
tomwalters@0 78
tomwalters@0 79 /*---------------------------------*/
tomwalters@0 80 /* clip check */
tomwalters@0 81 if ((interval[channel][gap_samples] > 32765) ||
tomwalters@0 82 (interval[channel][gap_samples] < 0)){
tomwalters@0 83 if (clip[channel] == OFF) {
tomwalters@0 84 fprintf(stderr, " \nclipping: channel %i, interval %i samples.\n ", channel, gap_samples);
tomwalters@0 85 clip[channel] = ON;}
tomwalters@0 86 interval[channel][gap_samples] = 32765;
tomwalters@0 87 }
tomwalters@0 88 }
tomwalters@0 89 }
tomwalters@0 90
tomwalters@0 91
tomwalters@0 92
tomwalters@0 93 /* The End */
tomwalters@0 94 /*------------------------------------------------------------------------*/
tomwalters@0 95
tomwalters@0 96
tomwalters@0 97
tomwalters@0 98
tomwalters@0 99