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
|