Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 1 | import cmsisdsp as dsp |
| 2 | import numpy as np |
| 3 | from scipy import signal |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 4 | import matplotlib.pyplot as plt |
| 5 | from scipy.fftpack import dct |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 6 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 7 | r = dsp.arm_add_f32(np.array([1.,2,3]),np.array([4.,5,7])) |
| 8 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 9 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 10 | r = dsp.arm_add_q31([1,2,3],[4,5,7]) |
| 11 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 12 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 13 | r = dsp.arm_add_q15([1,2,3],[4,5,7]) |
| 14 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 15 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 16 | r = dsp.arm_add_q7([-1,2,3],[4,127,7]) |
| 17 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 18 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 19 | r = dsp.arm_scale_f32([1.,2,3],2) |
| 20 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 21 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 22 | r = dsp.arm_scale_q31([0x7FFF,0x3FFF,0x1FFF],1 << 20,2) |
| 23 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 24 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 25 | r = dsp.arm_scale_q15([0x7FFF,0x3FFF,0x1FFF],1 << 10,2) |
| 26 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 27 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 28 | r = dsp.arm_scale_q7([0x7F,0x3F,0x1F],1 << 5,2) |
| 29 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 30 | |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 31 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 32 | r = dsp.arm_negate_f32([1.,2,3]) |
| 33 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 34 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 35 | r = dsp.arm_negate_q31([1,2,3]) |
| 36 | print(r) |
| 37 | |
| 38 | r = dsp.arm_negate_q15([1,2,3]) |
| 39 | print(r) |
| 40 | |
| 41 | r = dsp.arm_negate_q7(np.array([0x80,0x81,0x82])) |
| 42 | print(r) |
| 43 | |
| 44 | r = dsp.arm_cmplx_conj_f32([1.,2,3,4]) |
| 45 | print(r) |
| 46 | |
| 47 | r = dsp.arm_cmplx_conj_q31([1,2,3,4]) |
| 48 | print(r) |
| 49 | |
| 50 | r = dsp.arm_cmplx_conj_q15([1,2,3,4]) |
| 51 | print(r) |
| 52 | |
| 53 | r = dsp.arm_cmplx_dot_prod_f32([1.,2,3,4],[1.,2,3,4]) |
| 54 | print(r) |
| 55 | |
| 56 | r = dsp.arm_cmplx_dot_prod_q31([0x1FFF,0x3FFF,0x1FFF,0x3FFF],[0x1FFF,0x3FFF,0x1FFF,0x3FFF]) |
| 57 | print(r) |
| 58 | |
| 59 | r = dsp.arm_cmplx_mult_real_f32([1.0,2,3,4],[5.,5.,5.,5.]) |
| 60 | print(r) |
| 61 | |
| 62 | pidf32 = dsp.arm_pid_instance_f32(Kp=1.0,Ki=1.2,Kd=0.4) |
| 63 | print(pidf32.Kp()) |
| 64 | print(pidf32.Ki()) |
| 65 | print(pidf32.Kd()) |
| 66 | print(pidf32.A0()) |
| 67 | |
| 68 | dsp.arm_pid_init_f32(pidf32,0) |
| 69 | print(pidf32.A0()) |
| 70 | |
| 71 | print(dsp.arm_cos_f32(3.14/4.)) |
| 72 | |
| 73 | print(dsp.arm_sqrt_q31(0x7FFF)) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 74 | |
| 75 | firf32 = dsp.arm_fir_instance_f32() |
| 76 | dsp.arm_fir_init_f32(firf32,3,[1.,2,3],[0,0,0,0,0,0,0]) |
| 77 | print(firf32.numTaps()) |
| 78 | filtered_x = signal.lfilter([3,2,1.], 1.0, [1,2,3,4,5,1,2,3,4,5]) |
| 79 | print(filtered_x) |
| 80 | print(dsp.arm_fir_f32(firf32,[1,2,3,4,5])) |
| 81 | print(dsp.arm_fir_f32(firf32,[1,2,3,4,5])) |
| 82 | |
| 83 | def q31sat(x): |
| 84 | if x > 0x7FFFFFFF: |
| 85 | return(np.int32(0x7FFFFFFF)) |
| 86 | elif x < -0x80000000: |
| 87 | return(np.int32(0x80000000)) |
| 88 | else: |
| 89 | return(np.int32(x)) |
| 90 | |
| 91 | q31satV=np.vectorize(q31sat) |
| 92 | |
| 93 | def toQ31(x): |
| 94 | return(q31satV(np.round(x * (1<<31)))) |
| 95 | |
| 96 | def q15sat(x): |
| 97 | if x > 0x7FFF: |
| 98 | return(np.int16(0x7FFF)) |
| 99 | elif x < -0x8000: |
| 100 | return(np.int16(0x8000)) |
| 101 | else: |
| 102 | return(np.int16(x)) |
| 103 | |
| 104 | q15satV=np.vectorize(q15sat) |
| 105 | |
| 106 | def toQ15(x): |
| 107 | return(q15satV(np.round(x * (1<<15)))) |
| 108 | |
| 109 | def q7sat(x): |
| 110 | if x > 0x7F: |
| 111 | return(np.int8(0x7F)) |
| 112 | elif x < -0x80: |
| 113 | return(np.int8(0x80)) |
| 114 | else: |
| 115 | return(np.int8(x)) |
| 116 | |
| 117 | q7satV=np.vectorize(q7sat) |
| 118 | |
| 119 | def toQ7(x): |
| 120 | return(q7satV(np.round(x * (1<<7)))) |
| 121 | |
| 122 | def Q31toF32(x): |
| 123 | return(1.0*x / 2**31) |
| 124 | |
| 125 | def Q15toF32(x): |
| 126 | return(1.0*x / 2**15) |
| 127 | |
| 128 | def Q7toF32(x): |
| 129 | return(1.0*x / 2**7) |
| 130 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 131 | firq31 = dsp.arm_fir_instance_q31() |
| 132 | x=np.array([1,2,3,4,5])/10.0 |
| 133 | taps=np.array([1,2,3])/10.0 |
| 134 | xQ31=toQ31(x) |
| 135 | tapsQ31=toQ31(taps) |
| 136 | dsp.arm_fir_init_q31(firq31,3,tapsQ31,[0,0,0,0,0,0,0]) |
| 137 | print(firq31.numTaps()) |
| 138 | resultQ31=dsp.arm_fir_q31(firq31,xQ31) |
| 139 | result=Q31toF32(resultQ31) |
| 140 | print(result) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 141 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 142 | a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) |
| 143 | b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]]) |
| 144 | print(a+b) |
| 145 | v=dsp.arm_mat_add_f32(a,b) |
| 146 | print(v) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 147 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 148 | a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) |
| 149 | b=np.array([[1.,2,3],[5.1,6,7],[9.1,10,11],[5,8,4]]) |
| 150 | print(np.dot(a , b)) |
| 151 | v=dsp.arm_mat_mult_f32(a,b) |
| 152 | print(v) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 153 | |
| 154 | def imToReal2D(a): |
| 155 | ar=np.zeros(np.array(a.shape) * [1,2]) |
| 156 | ar[::,0::2]=a.real |
| 157 | ar[::,1::2]=a.imag |
| 158 | return(ar) |
| 159 | |
| 160 | def realToIm2D(ar): |
| 161 | return(ar[::,0::2] + 1j * ar[::,1::2]) |
| 162 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 163 | a=np.array([[1. + 2j,3 + 4j],[5 + 6j,7 + 8j],[9 + 10j,11 + 12j]]) |
| 164 | b=np.array([[1. + 2j, 3 + 5.1j ,6 + 7j],[9.1 + 10j,11 + 5j,8 +4j]]) |
| 165 | print(np.dot(a , b)) |
| 166 | |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 167 | # Convert complex array to real array for use in CMSIS DSP |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 168 | ar = imToReal2D(a) |
| 169 | br = imToReal2D(b) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 170 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 171 | v=dsp.arm_mat_cmplx_mult_f32(ar,br) |
| 172 | print(v) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 173 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 174 | a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) / 30.0 |
| 175 | b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]]) / 30.0 |
| 176 | print(a+b) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 177 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 178 | aQ31=toQ31(a) |
| 179 | bQ31=toQ31(b) |
| 180 | v=dsp.arm_mat_add_q31(aQ31,bQ31) |
| 181 | rQ31=v[1] |
| 182 | r=Q31toF32(rQ31) |
| 183 | print(r) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 184 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 185 | a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) |
| 186 | print(np.transpose(a)) |
| 187 | print(dsp.arm_mat_trans_f32(a)) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 188 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 189 | a = np.array([[1., 2.], [3., 4.]]) |
| 190 | print(np.linalg.inv(a)) |
| 191 | print(dsp.arm_mat_inverse_f32(a)) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 192 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 193 | a = np.array([[1., 2.], [3., 4.]]) |
| 194 | print(np.linalg.inv(a)) |
| 195 | print(dsp.arm_mat_inverse_f64(a)) |
| 196 | |
| 197 | a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) |
| 198 | print(2.5*a) |
| 199 | print(dsp.arm_mat_scale_f32(a,2.5)) |
| 200 | |
| 201 | a=np.array([1.,2,3,4,5,6,7,8,9,10,11,12]) |
| 202 | print(np.max(a)) |
| 203 | print(np.argmax(a)) |
| 204 | print(dsp.arm_max_f32(a)) |
| 205 | |
| 206 | print(np.mean(a)) |
| 207 | print(dsp.arm_mean_f32(a)) |
| 208 | |
| 209 | print(np.dot(a,a)) |
| 210 | print(dsp.arm_power_f32(a)) |
| 211 | |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 212 | |
| 213 | def imToReal1D(a): |
| 214 | ar=np.zeros(np.array(a.shape) * 2) |
| 215 | ar[0::2]=a.real |
| 216 | ar[1::2]=a.imag |
| 217 | return(ar) |
| 218 | |
| 219 | def realToIm1D(ar): |
| 220 | return(ar[0::2] + 1j * ar[1::2]) |
| 221 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 222 | nb = 16 |
| 223 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 224 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 225 | result=np.fft.fft(signal) |
| 226 | print(result) |
| 227 | signalR = imToReal1D(signal) |
| 228 | cfftf32=dsp.arm_cfft_instance_f32() |
| 229 | status=dsp.arm_cfft_init_f32(cfftf32,nb) |
| 230 | print(status) |
| 231 | resultR = dsp.arm_cfft_f32(cfftf32,signalR,0,1) |
| 232 | resultI = realToIm1D(resultR) |
| 233 | print(resultI) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 234 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 235 | signal = signal / 10.0 |
| 236 | result=np.fft.fft(signal) |
| 237 | print(result) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 238 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 239 | signalR = imToReal1D(signal) |
| 240 | signalRQ31=toQ31(signalR) |
| 241 | cfftq31=dsp.arm_cfft_instance_q31() |
| 242 | status=dsp.arm_cfft_init_q31(cfftq31,nb) |
| 243 | print(status) |
| 244 | resultR = dsp.arm_cfft_q31(cfftq31,signalRQ31,0,1) |
| 245 | resultI = realToIm1D(Q31toF32(resultR))*16 |
| 246 | print(resultI) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 247 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 248 | signal = signal / 10.0 |
| 249 | result=np.fft.fft(signal) |
| 250 | print(result) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 251 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 252 | signalR = imToReal1D(signal) |
| 253 | signalRQ15=toQ15(signalR) |
| 254 | cfftq15=dsp.arm_cfft_instance_q15() |
| 255 | status=dsp.arm_cfft_init_q15(cfftq15,nb) |
| 256 | print(status) |
| 257 | resultR = dsp.arm_cfft_q15(cfftq15,signalRQ15,0,1) |
| 258 | resultR=Q15toF32(resultR) |
| 259 | resultI = realToIm1D(resultR)*16 |
| 260 | print(resultI) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 261 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 262 | nb = 128 |
| 263 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
| 264 | |
| 265 | result=np.fft.fft(signal) |
| 266 | print(result) |
| 267 | cfftradix4f32=dsp.arm_cfft_radix4_instance_f32() |
| 268 | rfftf32=dsp.arm_rfft_instance_f32() |
| 269 | status=dsp.arm_rfft_init_f32(rfftf32,cfftradix4f32,nb,0,1) |
| 270 | print(status) |
| 271 | resultI = dsp.arm_rfft_f32(rfftf32,signal) |
| 272 | print(result) |
| 273 | |
| 274 | nb = 128 |
| 275 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
| 276 | signalRQ31=toQ31(signal) |
| 277 | |
| 278 | result=np.fft.fft(signal) |
| 279 | print(result) |
| 280 | rfftq31=dsp.arm_rfft_instance_q31() |
| 281 | status=dsp.arm_rfft_init_q31(rfftq31,nb,0,1) |
| 282 | print(status) |
| 283 | resultI = dsp.arm_rfft_q31(rfftq31,signalRQ31) |
| 284 | resultI=Q31toF32(resultI)*(1 << 7) |
| 285 | print(result) |
| 286 | |
| 287 | nb = 128 |
| 288 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
| 289 | signalRQ15=toQ15(signal) |
| 290 | |
| 291 | result=np.fft.fft(signal) |
| 292 | print(result) |
| 293 | rfftq15=dsp.arm_rfft_instance_q15() |
| 294 | status=dsp.arm_rfft_init_q15(rfftq15,nb,0,1) |
| 295 | print(status) |
| 296 | resultI = dsp.arm_rfft_q15(rfftq15,signalRQ15) |
| 297 | resultI=Q15toF32(resultI)*(1 << 7) |
| 298 | print(result) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 299 | |
| 300 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 301 | nb = 128 |
| 302 | nb2=64 |
| 303 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
| 304 | result=dct(signal,4,norm='ortho') |
| 305 | print(result) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 306 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 307 | cfftradix4f32=dsp.arm_cfft_radix4_instance_f32() |
| 308 | rfftf32=dsp.arm_rfft_instance_f32() |
| 309 | dct4f32=dsp.arm_dct4_instance_f32() |
| 310 | status=dsp.arm_dct4_init_f32(dct4f32,rfftf32,cfftradix4f32,nb,nb2,0.125) |
| 311 | print(status) |
| 312 | state=np.zeros(2*nb) |
| 313 | resultI = dsp.arm_dct4_f32(dct4f32,state,signal) |
| 314 | print(resultI) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 315 | |
| 316 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 317 | signal = signal / 10.0 |
| 318 | result=dct(signal,4,norm='ortho') |
| 319 | signalQ31=toQ31(signal) |
| 320 | cfftradix4q31=dsp.arm_cfft_radix4_instance_q31() |
| 321 | rfftq31=dsp.arm_rfft_instance_q31() |
| 322 | dct4q31=dsp.arm_dct4_instance_q31() |
| 323 | status=dsp.arm_dct4_init_q31(dct4q31,rfftq31,cfftradix4q31,nb,nb2,0x10000000) |
| 324 | print(status) |
| 325 | state=np.zeros(2*nb) |
| 326 | resultI = dsp.arm_dct4_q31(dct4q31,state,signalQ31) |
| 327 | resultI=Q31toF32(resultI)*(1 << 7) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 328 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 329 | nb = 128 |
| 330 | nb2=64 |
| 331 | signal = np.cos(2 * np.pi * np.arange(nb) / nb) |
| 332 | signal = signal / 10.0 |
| 333 | result=dct(signal,4,norm='ortho') |
| 334 | signalQ15=toQ15(signal) |
| 335 | cfftradix4q15=dsp.arm_cfft_radix4_instance_q15() |
| 336 | rfftq15=dsp.arm_rfft_instance_q15() |
| 337 | dct4q15=dsp.arm_dct4_instance_q15() |
| 338 | status=dsp.arm_dct4_init_q15(dct4q15,rfftq15,cfftradix4q15,nb,nb2,0x1000) |
| 339 | print(status) |
| 340 | state=np.zeros(2*nb) |
| 341 | resultI = dsp.arm_dct4_q15(dct4q15,state,signalQ15) |
| 342 | resultI=Q15toF32(resultI)*(1 << 7) |
Christophe Favergeon | 53f828f | 2019-03-25 13:42:44 +0100 | [diff] [blame] | 343 | |
Christophe Favergeon | aefd277 | 2020-01-08 09:01:17 +0100 | [diff] [blame] | 344 | |
| 345 | from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show |
| 346 | figure(1) |
| 347 | plot(np.absolute(signal)) |
| 348 | t = np.arange(nb) |
| 349 | freq = np.fft.fftfreq(t.shape[-1]) |
| 350 | resultmag=np.absolute(result) |
| 351 | figure(2) |
| 352 | plot(resultmag) |
| 353 | figure(3) |
| 354 | cmsigmag=np.absolute(resultI) |
| 355 | plot(cmsigmag) |
| 356 | show() |
| 357 | |
| 358 | biquadf32 = dsp.arm_biquad_casd_df1_inst_f32() |
| 359 | numStages=1 |
| 360 | state=np.zeros(numStages*4) |
| 361 | coefs=[1.,2,3,4,5] |
| 362 | dsp.arm_biquad_cascade_df1_init_f32(biquadf32,1,coefs,state) |
| 363 | print(dsp.arm_biquad_cascade_df1_f32(biquadf32,[1,2,3,4,5])) |