#include <signalUtil.h>
Static Public Methods | |
void | gen_freqMix (double *vecX, double *vecY, size_t N) |
Generate a signal composed of a sum of sine waves. More... | |
void | gen_sinCombo (double *vecX, double *vecY, size_t N) |
Generate a signal composed of one or more sine waves. More... | |
void | prCoords (double *vecX, double *vecY, size_t len) |
Print a vector of doubles whose length is len. More... | |
void | prVec (double *vec, size_t len) |
Print a vector of doubles. More... | |
bool | vecEqual (const double *d1, const double *d2, const size_t N) |
If two vectors are equal, return true, otherwise return false. More... | |
double | new_y (size_t x1, double y1, size_t x2, double y2, size_t newX) |
Given two points {x1, y1} and {x2, y2}, where x1 and x2 are positive integer values, calculate the y value for a point {x, y}, where x is a positive integer such that x1 < x < x2 (e.g., x lies between x1 and x2). More... | |
void | sawToothWave (double *vec, size_t N, size_t numCycles, double amplitude) |
Generate a sawtooth wave centered around zero on the x-axis. More... | |
void | addSignal (double *C, const double *A, const double *B, const size_t N) |
Add vector A to vector B and place the result in vector C. More... | |
Private Methods | |
signalUtil () | |
This class is designed to provide static functions, not to be declared as a class instance. More... | |
~signalUtil () | |
signalUtil (const signalUtil &rhs) |
Definition at line 9 of file signalUtil.h.
|
This class is designed to provide static functions, not to be declared as a class instance.
Definition at line 13 of file signalUtil.h. 00013 {}; |
|
Definition at line 14 of file signalUtil.h. 00014 {}; |
|
Definition at line 15 of file signalUtil.h. 00015 {} |
|
Add vector A to vector B and place the result in vector C. N is the size of the vectors. Definition at line 168 of file signalUtil.cpp. Referenced by genSawTooth().
00172 { 00173 for (size_t i = 0; i < N; i++) { 00174 C[i] = A[i] + B[i]; 00175 } 00176 } |
|
Generate a signal composed of a sum of sine waves. The sine waves summed are in decreasing magnitude and decreasing frequency. Definition at line 13 of file signalUtil.cpp. 00014 { 00015 const double PI = 3.1415926535897932384626433832795; 00016 const double range = 2 * PI; 00017 const double incr = range / (double)N; 00018 00019 double point = 0.0; 00020 int i; 00021 for (i = 0; i < N; i++) { 00022 vecX[i] = point; 00023 vecY[i] = 4 * sin( 64 * point ) + 00024 2 * sin( 32 * point ) + 00025 1 * sin( 16 * point ) + 00026 0.5 * sin( 8 * point ); 00027 // printf("%7.4g, %7.4g\n", vecX[i], vecY[i] ); 00028 point = point + incr; 00029 } 00030 } // gen_freqMix |
|
Generate a signal composed of one or more sine waves.
Definition at line 37 of file signalUtil.cpp. 00038 { 00039 const double PI = 3.1415926535897932384626433832795; 00040 const double range = 1 * PI; 00041 const double incr = range / (double)N; 00042 00043 double point = 0.0; 00044 00045 int stepCnt = 0; 00046 int i; 00047 for (i = 0; i < N; i++) { 00048 vecX[i] = point; 00049 // vecY[i] = sin( 64 * point ) + sin( 32 * point ) + sin( 16 * point ); 00050 // vecY[i] = sin( 16 * PI * point ) + sin( 4 * PI * point ); 00051 vecY[i] = sin( 4 * PI * point ); 00052 00053 // printf("x[%2d] = %7.4g, y[%2d] = %7.4g\n", i, vecX[i], i, vecY[i] ); 00054 // printf("%7.4g, %7.4g\n", vecX[i], vecY[i] ); 00055 // printf("%d, %7.4g\n", i, vecY[i] ); 00056 00057 point = point + incr; 00058 } 00059 } |
|
Given two points {x1, y1} and {x2, y2}, where x1 and x2 are positive integer values, calculate the y value for a point {x, y}, where x is a positive integer such that x1 < x < x2 (e.g., x lies between x1 and x2). The "two-point equation" for a line given x1, y1 and x2, y2 is
. y2 - y1 (y - y1) = -------- (x - x1) . x2 - x1 Solving for y
. y2 - y1 y = -------- (x - x1) + y1 . x2 - x1 Definition at line 89 of file signalUtil.cpp. Referenced by sawToothWave().
00092 { 00093 double newY = 0.0; 00094 00095 newY = (((y2 - y1)/(x2 - x1)) * (newX - x1)) + y1; 00096 return newY; 00097 } // new_y |
|
Print a vector of doubles whose length is len.
Definition at line 184 of file signalUtil.cpp. 00185 { 00186 for (int i = 0; i < len; i++) { 00187 printf("%7.4f %7.4f\n", vecX[i], vecY[i] ); 00188 } 00189 } |
|
Print a vector of doubles.
Definition at line 195 of file signalUtil.cpp. Referenced by main().
00196 { 00197 for (int i = 0; i < len; i++) { 00198 printf("%4d %7.4f\n", i, vec[i] ); 00199 } 00200 } // prVec |
|
Generate a sawtooth wave centered around zero on the x-axis. There is probably a simpler way to do this, but hey, this works.
Definition at line 114 of file signalUtil.cpp. Referenced by genSawTooth().
00118 { 00119 size_t spacing = N / numCycles; 00120 size_t step = spacing / 4; 00121 bool positive = true; 00122 00123 size_t x1, x2; 00124 double y1, y2; 00125 00126 for (size_t i = 0; i < N; i = i + spacing) { 00127 x1 = i; 00128 x2 = i + step; 00129 for (size_t j = 1; j <= 4; j++) { 00130 switch (j) { 00131 case 1: { 00132 y1 = 0.0; 00133 y2 = amplitude; 00134 } 00135 break; 00136 case 2:{ 00137 y1 = amplitude; 00138 y2 = 0.0; 00139 } 00140 break; 00141 case 3:{ 00142 y1 = 0.0; 00143 y2 = -amplitude; 00144 } 00145 break; 00146 case 4:{ 00147 y1 = -amplitude; 00148 y2 = 0.0; 00149 } 00150 break; 00151 } // switch 00152 vec[x1] = y1; 00153 for (size_t k = x1+1; k < x2; k++) { 00154 vec[k] = new_y( x1, y1, x2, y2, k ); 00155 } 00156 x1 = x2; 00157 x2 = x2 + step; 00158 } 00159 } 00160 } // sawToothWave |
|
If two vectors are equal, return true, otherwise return false.
Definition at line 208 of file signalUtil.cpp. 00211 { 00212 bool rslt = true; 00213 00214 for (size_t i = 0; i < N; i++) { 00215 if (d1[i] != d2[i]) { 00216 rslt = false; 00217 break; 00218 } 00219 } 00220 return rslt; 00221 } |