numpy fft 备忘.

主要参考以下注释网站

  1 #encoding:utf-8
  2 #https://blog.csdn.net/weixin_39949473/article/details/111337230
  3 #https://blog.csdn.net/weixin_35756373/article/details/112713361
  4 from numpy.fft import fft 
  5 
  6 import  pylab
  7 import matplotlib.pyplot as plt
  8 import numpy as np
  9 from matplotlib.animation import FuncAnimation
 10  
 11 ph=r"d:\Users\Administrator\Documents\Kangaroo_test\lin.txt"
 12 mtxt=''
 13 with open(ph,'r') as f:
 14     mtxt=f.read()
 15 txt=mtxt.split('\n')
 16 xn=[]
 17 for i in txt:
 18     if len(i)==0:
 19         continue
 20     sp,ep=i.split(r',')
 21     sp=float(sp)
 22     ep=float(ep)
 23     xn.append(sp+ep*1j)
 24     
 25 # xn=np.linspace(0.2, 3, 128)
 26 # X = fft([i+1/i*1j for i in xn])
 27 
 28 X = fft(xn)
 29 
 30 frames = len(X)  # number of animation frames
 31 n = frames       # number of ciecles
 32 coef = np.arange(frames)
 33 
 34 factor = []
 35 for i in range(len(coef)):
 36   factor.append(X[i] * np.exp(2 * np.pi * 1j * coef[i] * np.arange(frames) / frames) / frames)
 37 pos = [[0 for i in range(frames)]]
 38 for i in range(len(coef)):
 39   pos.append(pos[-1] + factor[i])
 40  
 41 fig, ax = pylab.subplots()
 42 lines = []
 43 circles = []
 44 def _init_lines():  
 45     global  lines  
 46     lines += [ax.plot([], [], alpha=1)[0] for i in range(n)]
 47  
 48 def _init_circles():
 49     global  circles,ax
 50     for i in range(n):
 51         radius = np.abs(pos[i+1][0] - pos[i][0])
 52         circle = plt.Circle((-1, -1), radius, alpha=0.6, fill=False)
 53         circles.append(circle)
 54         ax.add_artist(circle)
 55     ####
 56     circle_cyl=plt.Circle((-1, -1), 0.01, alpha=0.99, fill=True)
 57     circles.append(circle_cyl)
 58     ax.add_artist(circle_cyl)
 59     
 60     
 61 path_x = []
 62 path_y = []
 63  
 64 flag=0 
 65 def init_frame():
 66     global  flag
 67     flag+=1
 68     print ( flag )
 69     ax.clear()
 70     viewZoom=1
 71     ax.set(xlim=[-1*viewZoom, 1*viewZoom], ylim=[-1*viewZoom, 1*viewZoom])
 72     ax.axis('off')
 73     _init_lines()
 74     _init_circles()
 75     global path
 76     path = ax.plot([], [])[0]
 77  
 78 def _render_lines(k):
 79     for i in range(n):
 80         p, q = pos[i][k], pos[i+1][k]
 81         lines[i].set_data([p.real, q.real], [p.imag, q.imag])
 82     ###
 83     circles[-1].center = (q.real, q.imag)
 84  
 85 def _render_circles(k):
 86     for i in range(n):
 87         p = pos[i][k]        
 88         circles[i].center = (p.real, p.imag)
 89     
 90  
 91 def render_frame(k):    
 92     _render_lines(k)
 93     _render_circles(k)
 94     p = pos[n][k]
 95     path_x.append(p.real)
 96     path_y.append(p.imag)
 97     path.set_data(path_x, path_y)
 98     
 99 
100 fq= 1000/120
101 animation = FuncAnimation(fig,
102                           render_frame,
103                           frames=range(frames),
104                           interval=fq,
105                           repeat_delay=fq,
106                           init_func=init_frame,
107                           repeat=1)
108 pylab.show()
109 
110     

 

测试 txt点集文件

-0.049232844231,0.0992831516301
-0.0496022321778,0.057524373699
-0.0521786560248,0.0158532228812
-0.068789539469,0.00963270461548
-0.0977475272242,0.0397213672635
-0.127524661025,0.0690008407628
-0.157906922277,0.0976524479613
-0.18869270775,0.12587051679
-0.219689491178,0.153856795101
-0.224307764655,0.120997161149
-0.225060105945,0.0792422195054
-0.225812447236,0.0374872778613
-0.226564788527,-0.00426766378267
-0.227317129818,-0.0460226054267
-0.228069471109,-0.0877775470707
-0.2288218124,-0.129532488715
-0.229574153691,-0.171287430359
-0.230326494982,-0.213042372003
-0.231078836272,-0.254797313647
-0.231831177563,-0.296552255291
-0.232583518854,-0.338307196935
-0.233335860145,-0.380062138579
-0.234088201436,-0.421817080223
-0.234840542727,-0.463572021867
-0.23406682897,-0.50528613123
-0.236880672834,-0.546783712117
-0.263623481405,-0.541137647928
-0.281501103017,-0.503396002302
-0.29937872463,-0.465654356676
-0.301276260762,-0.430147827424
-0.290720562447,-0.389967229018
-0.287896876373,-0.348316887852
-0.287167934456,-0.306562834091
-0.28618557767,-0.264812670687
-0.285203220884,-0.223062507283
-0.284220864098,-0.181312343879
-0.283238507312,-0.139562180475
-0.282256150526,-0.0978120170714
-0.28127379374,-0.0560618536674
-0.280291436954,-0.0143116902634
-0.279309080168,0.0274384731405
-0.278326723382,0.0691886365445
-0.277344366596,0.110938799948
-0.27636200981,0.152688963352
-0.287757631673,0.146552932914
-0.307708741553,0.10986582613
-0.32837792291,0.0735784356736
-0.349762453472,0.0377080150188
-0.371858329362,0.00227155119055
-0.394660550348,-0.0327147763075
-0.418162605899,-0.0672348579366
-0.442356872926,-0.101273355528
-0.467234546841,-0.134815624914
-0.492785630149,-0.16784772941
-0.518999136371,-0.200356711936
-0.545862957331,-0.232330409182
-0.573364005207,-0.263757612789
-0.601488444217,-0.294628287112
-0.631048719569,-0.314645639541
-0.634556599816,-0.286484294791
-0.607600462821,-0.254588843457
-0.581434248834,-0.222042183578
-0.556048464678,-0.188883244674
-0.531430869407,-0.155149704265
-0.507567456896,-0.12087858525
-0.484442119061,-0.0861051445069
-0.462037250878,-0.0508630768635
-0.440334113567,-0.0151845071957
-0.419313019304,0.0209002208026
-0.398953680235,0.0573624128243
-0.379235309509,0.0941752393255
-0.360136936134,0.131313505097
-0.341637477218,0.16875379103
-0.323715962529,0.20647424773
-0.306351701784,0.244454416099
-0.303080639959,0.27216969355
-0.344297489058,0.265446347935
-0.385433726488,0.25824800967
-0.426385016882,0.250071629365
-0.466646351195,0.239088458028
-0.500376783807,0.250928123094
-0.532084644641,0.278106289523
-0.557011050704,0.303071103797
-0.515408527655,0.306708632128
-0.473864930648,0.310967734644
-0.43237779759,0.31574665731
-0.390945793209,0.320982378234
-0.349568416114,0.326633908111
-0.308246005095,0.332674005145
-0.275977030278,0.346765863936
-0.275977030278,0.388527582879
-0.275977030278,0.430289301823
-0.275977030278,0.472051020766
-0.275977030278,0.513812739709
-0.275977030278,0.555574458653
-0.274585061385,0.597295640806
-0.276287494939,0.638996464807
-0.28380957414,0.680029687615
-0.298748152592,0.718944440366
-0.297625382351,0.749216706773
-0.26445163379,0.723848546108
-0.231277885229,0.698480385444
-0.203246954404,0.674486673854
-0.221631295903,0.638945814015
-0.225088516339,0.59736723647
-0.224180733271,0.555624759081
-0.223651448882,0.513879137779
-0.223651448882,0.472117418835
-0.223651448882,0.430355699892
-0.223651448882,0.388593980948
-0.223651448882,0.346832262005
-0.18564482762,0.348936649945
-0.144519854358,0.356182199128
-0.104087521021,0.366517903668
-0.0692729471465,0.367962386462
-0.0350604139323,0.344013613212
0.00445577023738,0.341487072628
0.0459705228884,0.346020637648
0.0874950226481,0.350465435819
0.128999050686,0.355097138148
0.170467591851,0.36003610983
0.178377667108,0.395564070291
0.179421383971,0.437312744811
0.180465100834,0.479061419332
0.181508817697,0.520810093852
0.18255253456,0.562558768373
0.183966475911,0.60429175821
0.184631178645,0.646037965299
0.181137720451,0.687624866652
0.170481316598,0.72790635113
0.149028237553,0.762660512484
0.180839589147,0.757818732672
0.214013337708,0.732450572008
0.247187086269,0.707082411343
0.243573188398,0.67636623326
0.235023750768,0.635633713983
0.234741398521,0.59390838732
0.234827308111,0.552192822
0.233667707653,0.510447205513
0.232508107195,0.468701589026
0.231348506737,0.426955972539
0.230188906279,0.385210356052
0.258673896229,0.37633261733
0.300056973508,0.38194319334
0.341391180586,0.387901835963
0.382614699534,0.394577838952
0.423459794805,0.403216947781
0.459172135197,0.40280942253
0.492848993988,0.378113059416
0.52652585278,0.353416696303
0.497417022909,0.348068393529
0.455781212146,0.344848148577
0.414223176308,0.34073185564
0.372715368644,0.336135077215
0.331239447846,0.331257855768
0.289783583959,0.326213319875
0.248339490705,0.321072100158
0.254067457036,0.287739446127
0.269259135983,0.248838888364
0.284558925725,0.209980730522
0.299991652879,0.171175157398
0.315590655966,0.132436214085
0.331402601475,0.093783674034
0.347495964708,0.0552474156668
0.363978263373,0.0168762483552
0.381036631681,-0.0212420018369
0.399096145003,-0.0588928395245
0.419485291764,-0.0953381239738
0.440917750289,-0.131177779309
0.464220407337,-0.165822041994
0.491252284537,-0.197593868274
0.527339804956,-0.218127467711
0.567278890667,-0.230230553504
0.608197504829,-0.238539607222
0.642627620885,-0.250679250834
0.622996522734,-0.272809871626
0.581234803791,-0.272809871626
0.539473084847,-0.272809871626
0.497711365904,-0.272809871626
0.45594964696,-0.272809871626
0.426500656201,-0.259535502759
0.416546480979,-0.219024507111
0.40292185668,-0.179551691204
0.388220448469,-0.140463543528
0.372014234006,-0.101996705903
0.354975195035,-0.0638693868485
0.338275592217,-0.0255920137165
0.321849783944,0.0128036387221
0.305657129273,0.0512982980069
0.289670210902,0.0898787955416
0.273869230635,0.12853581791
0.258239301254,0.167262306804
0.2427688144,0.206052783687
0.229786640893,0.232281334092
0.229465406405,0.190520850647
0.229144171917,0.148760367203
0.228822937429,0.106999883758
0.228501702941,0.0652394003139
0.228180468453,0.0234789168694
0.227859233965,-0.0182815665751
0.227537999477,-0.0600420500195
0.227216764989,-0.101802533464
0.226895530501,-0.143563016909
0.226574296013,-0.185323500353
0.226253061525,-0.227083983797
0.225931827037,-0.268844467242
0.225610592549,-0.310604950686
0.225289358061,-0.352365434131
0.224968123573,-0.394125917575
0.224646889085,-0.43588640102
0.224325654597,-0.477646884464
0.22401876692,-0.519407436937
0.221584547955,-0.561059336029
0.19906468746,-0.5577052113
0.176377580266,-0.522643318364
0.153690473072,-0.487581425427
0.156860234921,-0.454667364926
0.170625243215,-0.415520134915
0.17303146128,-0.373896986135
0.171944802191,-0.332185386568
0.172414005371,-0.290426303514
0.172883208552,-0.248667220461
0.173352411732,-0.206908137407
0.173821614913,-0.165149054353
0.174290818093,-0.123389971299
0.174760021273,-0.0816308882456
0.175229224454,-0.0398718051919
0.175698427634,0.00188727786185
0.176167630815,0.0436463609156
0.176636833995,0.0854054439693
0.177106037175,0.127164527023
0.175207597851,0.158036780212
0.157791759241,0.120080803301
0.139487259007,0.0825454333286
0.120282464102,0.0454626820568
0.100167748065,0.00886548443653
0.079135924511,-0.0272121685761
0.0571819701317,-0.0627363416486
0.034303808625,-0.0976724143493
0.0105021376361,-0.131985987466
-0.0142191907165,-0.165642850631
-0.0398533927525,-0.198609781346
-0.0663904076162,-0.230854482667
-0.0938169117738,-0.26234599052
-0.122116493209,-0.293055170007
-0.151269855982,-0.322955120808
-0.178926865678,-0.331175816199
-0.160579153631,-0.298872831607
-0.134272076816,-0.266440128396
-0.108830808941,-0.233323919966
-0.0842698089707,-0.199549773486
-0.0605999511103,-0.165145122392
-0.0378286601426,-0.130139229087
-0.0159597203238,-0.0945625789711
0.00500660487594,-0.058446605189
0.0250735196126,-0.0218232127255
0.0442474576332,0.0152754650861
0.0625380255702,0.0528177239553
0.0799574435883,0.0907719915327
0.0965205884669,0.129107756396
0.112244492731,0.167795387013
0.127148063719,0.206806348429
0.141251949451,0.246113812629
0.154577811451,0.285691571557
0.136344377341,0.3006460966
0.0949585882514,0.295111774587
0.0542692499376,0.285835348353
0.0174923553402,0.280589908553
-0.0154723501092,0.306229123902
-0.0544066540584,0.31337194009
-0.0959340718555,0.309026886034
-0.137185643957,0.302536512272
-0.178219616031,0.29477925772
-0.21911126664,0.286300342756
-0.223651448882,0.248210729329
-0.223651448882,0.206449010385
-0.194387931168,0.181952281736
-0.158034744977,0.161398067816
-0.121812668148,0.14061346029
-0.0855984679436,0.119815071014

  

 

上一篇:Android实现按两次返回键退出程序的两种实现方式


下一篇:听说拍人家违章月入十万?我写了个自动检测车辆是否违章不发财了