Changeset c7860af for src/fvec.c
- Timestamp:
- Dec 4, 2009, 1:32:43 AM (14 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- 66fb3ea
- Parents:
- c6d0169
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/fvec.c
rc6d0169 rc7860af 22 22 #include "fvec.h" 23 23 24 fvec_t * new_fvec( uint_t length , uint_t channels) {24 fvec_t * new_fvec( uint_t length) { 25 25 fvec_t * s = AUBIO_NEW(fvec_t); 26 uint_t i,j; 27 s->channels = channels; 26 uint_t j; 28 27 s->length = length; 29 s->data = AUBIO_ARRAY(smpl_t*,s->channels); 30 for (i=0; i< s->channels; i++) { 31 s->data[i] = AUBIO_ARRAY(smpl_t, s->length); 32 for (j=0; j< s->length; j++) { 33 s->data[i][j]=0.; 34 } 28 s->data = AUBIO_ARRAY(smpl_t, s->length); 29 for (j=0; j< s->length; j++) { 30 s->data[j]=0.; 35 31 } 36 32 return s; … … 38 34 39 35 void del_fvec(fvec_t *s) { 40 uint_t i;41 for (i=0; i<s->channels; i++) {42 AUBIO_FREE(s->data[i]);43 }44 36 AUBIO_FREE(s->data); 45 37 AUBIO_FREE(s); 46 38 } 47 39 48 void fvec_write_sample(fvec_t *s, smpl_t data, uint_t channel, uint_t position) { 49 s->data[channel][position] = data; 50 } 51 smpl_t fvec_read_sample(fvec_t *s, uint_t channel, uint_t position) { 52 return s->data[channel][position]; 53 } 54 void fvec_put_channel(fvec_t *s, smpl_t * data, uint_t channel) { 55 s->data[channel] = data; 56 } 57 smpl_t * fvec_get_channel(fvec_t *s, uint_t channel) { 58 return s->data[channel]; 40 void fvec_write_sample(fvec_t *s, smpl_t data, uint_t position) { 41 s->data[position] = data; 59 42 } 60 43 61 smpl_t ** fvec_get_data(fvec_t *s) { 44 smpl_t fvec_read_sample(fvec_t *s, uint_t position) { 45 return s->data[position]; 46 } 47 48 smpl_t * fvec_get_data(fvec_t *s) { 62 49 return s->data; 63 50 } … … 66 53 67 54 void fvec_print(fvec_t *s) { 68 uint_t i,j; 69 for (i=0; i< s->channels; i++) { 70 for (j=0; j< s->length; j++) { 71 AUBIO_MSG(AUBIO_SMPL_FMT " ", s->data[i][j]); 72 } 73 AUBIO_MSG("\n"); 55 uint_t j; 56 for (j=0; j< s->length; j++) { 57 AUBIO_MSG(AUBIO_SMPL_FMT " ", s->data[j]); 74 58 } 59 AUBIO_MSG("\n"); 75 60 } 76 61 77 62 void fvec_set(fvec_t *s, smpl_t val) { 78 uint_t i,j; 79 for (i=0; i< s->channels; i++) { 80 for (j=0; j< s->length; j++) { 81 s->data[i][j] = val; 82 } 63 uint_t j; 64 for (j=0; j< s->length; j++) { 65 s->data[j] = val; 83 66 } 84 67 } … … 93 76 94 77 void fvec_rev(fvec_t *s) { 95 uint_t i,j; 96 for (i=0; i< s->channels; i++) { 97 for (j=0; j< FLOOR(s->length/2); j++) { 98 ELEM_SWAP(s->data[i][j], s->data[i][s->length-1-j]); 99 } 78 uint_t j; 79 for (j=0; j< FLOOR(s->length/2); j++) { 80 ELEM_SWAP(s->data[j], s->data[s->length-1-j]); 100 81 } 101 82 } 102 83 103 84 void fvec_weight(fvec_t *s, fvec_t *weight) { 104 uint_t i,j;85 uint_t j; 105 86 uint_t length = MIN(s->length, weight->length); 106 for (i=0; i< s->channels; i++) { 107 for (j=0; j< length; j++) { 108 s->data[i][j] *= weight->data[0][j]; 109 } 87 for (j=0; j< length; j++) { 88 s->data[j] *= weight->data[j]; 110 89 } 111 90 } 112 91 113 92 void fvec_copy(fvec_t *s, fvec_t *t) { 114 uint_t i,j; 115 uint_t channels = MIN(s->channels, t->channels); 93 uint_t j; 116 94 uint_t length = MIN(s->length, t->length); 117 if (s->channels != t->channels) {118 AUBIO_ERR("warning, trying to copy %d channels to %d channels\n",119 s->channels, t->channels);120 }121 95 if (s->length != t->length) { 122 AUBIO_ ERR("warning,trying to copy %d elements to %d elements \n",96 AUBIO_WRN("trying to copy %d elements to %d elements \n", 123 97 s->length, t->length); 124 98 } 125 for (i=0; i< channels; i++) { 126 for (j=0; j< length; j++) { 127 t->data[i][j] = s->data[i][j]; 128 } 99 for (j=0; j< length; j++) { 100 t->data[j] = s->data[j]; 129 101 } 130 102 }
Note: See TracChangeset
for help on using the changeset viewer.