[关闭]
@wudawufanfan 2016-12-16T17:24:21.000000Z 字数 1288 阅读 445

在此处输入标题

未分类


在此输入正文

  1. from matplotlib import animation
  2. from pylab import*
  3. import numpy as np
  4. c=320.0
  5. dx=6.5*1e-4
  6. l=np.linspace(0,0.65,1000)
  7. def w():
  8. y=[]
  9. dt=dx/c
  10. t=0.0
  11. y0=np.exp(-1000*(l-l*0.2)**2)
  12. y.append(y0)
  13. y.append(y0)
  14. while t<0.05:
  15. y_next=np.zeros(1000)
  16. for i in range(1,998):
  17. y_next[i]=-y[-2][i]+y[-1][i+1]+y[-1][i-1]
  18. y.append(y_next)
  19. t=t+dt
  20. return y, t
  21. #print w()[0] ,w()[1]
  22. y1=[]
  23. def w2():
  24. t1=0.0
  25. dt1=dx/c
  26. y_1=np.exp(-1000*(l-l*0.05)**2)
  27. y1.append(y_1)
  28. y1.append(y_1)
  29. while t1<0.05:
  30. y_next=np.zeros(1000)
  31. for i in range(1,998):
  32. y_next[i]=-y1[-2][i]+y1[-1][i+1]+y1[-1][i-1]
  33. y1.append(y_next)
  34. t1=t1+dt1
  35. return y1, t1
  36. a=w()[0]
  37. a01=w2()[0]
  38. #print cmp(a,a01)
  39. '''
  40. for iter in a01:
  41. print type(a01)
  42. '''
  43. b=[a_iter[800] for a_iter in a]
  44. b01=[a01_iter[950] for a01_iter in a01]
  45. print( len(b))
  46. e=len(b)
  47. e01=len(b01)
  48. d=linspace(0,dx/c*e,e)
  49. d01=linspace(0,dx/c*e01,e01)
  50. #print d
  51. '''
  52. plot(d,b)
  53. xlim(0,0.05)
  54. xlabel('Time(s)')
  55. ylabel('Signal(arbitary units)')
  56. title('String signal versus time')
  57. show()
  58. '''
  59. y2=np.fft.fft(b)
  60. f=np.fft.fftfreq(len(b),dx/c)
  61. y2=abs(y2)**2
  62. #print f,len(y2)
  63. plot(f,y2)
  64. xlim(0,6000)
  65. xlabel('Frequency(Hz)')
  66. ylabel('Power(arbitrary units)')
  67. title('Guitar Power spectrum:Pluck at 1/5')
  68. show()
  69. y21=np.fft.fft(b01)
  70. f01=np.fft.fftfreq(len(b01),dx/c)
  71. y21=abs(y21)**2
  72. plot(f01,y21,color='r')
  73. xlim(0,12000)
  74. xlabel('Frequency(Hz)')
  75. ylabel('Power(arbitrary units)')
  76. title('Guitar Power spectrum:Pluck at 1/20')
  77. show()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注