FFT_for_analyize_data.ipynb
31.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
{
"cells": [
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import math\n",
"import wave\n",
"import pyaudio\n",
"from scipy.fftpack import fft\n",
"from scipy.io import wavfile # get the api\n",
"\n",
"CHUNK = 1024\n",
"FORMAT = pyaudio.paInt16\n",
"CHANNELS = 1\n",
"RATE = 44100\n",
"RECORD_SECONDS = 5\n",
"count = 0\n"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* recording\n",
"* done recording\n"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/rfj/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/ipykernel_launcher.py:8: RuntimeWarning: overflow encountered in short_scalars\n",
" \n"
]
},
{
"data": {
"text/plain": [
"-24068"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Fs = 44032 # 샘플링 주파수\n",
"T = 1/Fs # 샘플링 interval time <-? \n",
"te= 5 #end of time\n",
"t = np.arange(0,te,T) # Time vector (0초부터 te초까지 T간격으로 떨어져있는 배열생성)\n",
"fs, data = wavfile.read('sounds/output%d.wav'% count) # load the data\n",
"y = data.T"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "x and y must have same first dimension, but have shapes (220160,) and (1,)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-128-0aaa3ccbf52c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdpi\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfacecolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'white'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'time($sec$)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'y'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 3356\u001b[0m mplDeprecation)\n\u001b[1;32m 3357\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3358\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3359\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3360\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hold\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwashold\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1853\u001b[0m \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1854\u001b[0m RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1855\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1856\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1857\u001b[0m inner.__doc__ = _add_data_doc(inner.__doc__,\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1525\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_alias_map\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1526\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1527\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1528\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1529\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_grab_next_args\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 404\u001b[0m \u001b[0mthis\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 405\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 406\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mseg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 407\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mseg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[0;34m(self, tup, kwargs)\u001b[0m\n\u001b[1;32m 381\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindex_of\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 383\u001b[0;31m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_xy_from_xy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 384\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 385\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'plot'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_xy_from_xy\u001b[0;34m(self, x, y)\u001b[0m\n\u001b[1;32m 240\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m raise ValueError(\"x and y must have same first dimension, but \"\n\u001b[0;32m--> 242\u001b[0;31m \"have shapes {} and {}\".format(x.shape, y.shape))\n\u001b[0m\u001b[1;32m 243\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 244\u001b[0m raise ValueError(\"x and y can be no greater than 2-D, but have \"\n",
"\u001b[0;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (220160,) and (1,)"
]
},
{
"data": {
"image/png": "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nlGse/7WW2/p4MGDWrZsWWzsxIkTkqSUlBS98cYbmjt37vguepJL5O88MzNTqamp8nq9sbGcnBz19PRoYGBAaWlp47rmyS6RPV+9erVKSkp02223SZIuu+wyffDBB7r99ttVW1s7pj8jjdGfP1NSUjR9+vRTvp0J/1fhZ76TL5E9l6QNGzbovvvu03PPPae8vLzxXuYZxbrn8+bN0+uvv67Ozs7Y5YYbbtDVV1+tzs5OhUKhZC190krk73zhwoXav39/LNQk6c0331RmZibhcAoS2fNjx44NCwSv1yv30Rv6x22tZ6vRnj/z8vKUmpp66jdkenvlODn50Z7m5ma3b98+V1FR4c4991x38OBB55xzJSUlce/UfeWVV5zX63X333+/6+rqcvfffz8f1TSy7vkDDzzg0tLS3Pbt292hQ4dil6NHj07UQ5h0rHv+SXzaws6655FIxJ133nnuzjvvdG+88YZ79tln3YwZM9yPf/zjiXoIk451z9esWeOmTp3qtm7d6g4cOOB27tzp5s6d62666aaJegiTytGjR11HR4fr6OhwktzGjRtdR0dH7KOx1dXVrqSkJDb/5Ec1Kysr3b59+1xzc/Pk/aimc85t3rzZZWdnu7S0NDd//nz34osvxv7bVVdd5VauXBk3/7e//a275JJLXGpqqps3b57bsWNHklc8+Vn2PDs720kadlmzZk3yFz6JWf/O/3/EQ2Kse97W1uby8/Odz+dzc+bMcevXr3eDg4NJXvXkZtnz48ePu7Vr17q5c+c6v9/vQqGQ++53v+v+85//TMDKJ58XXnhhxP83n9zjlStXuquuuirumF27drkrr7zSpaWluYsvvtg1Njaa75ef5AYAACYT/p4HAAAwuRAPAADAhHgAAAAmxAMAADAhHgAAgAnxAAAATIgHAABgQjwAAAAT4gEAAJgQDwAAwIR4AAAAJsQDAAAw+T8YVdVPsQpR6wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 600x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(num=1,dpi=100,facecolor='white')\n",
"plt.plot(t,y,'r')\n",
"plt.xlim(0, 5)\n",
"plt.xlabel('time($sec$)')\n",
"plt.ylabel('y')\n",
"plt.savefig(\"sounds/test_figure%d.png\"%count,dpi=300)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [],
"source": [
"'''\n",
"FFT 계산\n",
"양측파대 설명 = http://linecard.tistory.com/46\n",
"우리는 양측파대 안쓰고 단측파대를 쓰나보지..?\n",
"'''\n",
"\n",
"n= len(y) #신호의 길이 (FFT의 샘플개수 결정) (1000)\n",
"NFFT = n # C++ 에서는 NFFT = 2^nextpow2(length(y)) 해줘야하는데 파이썬에서는 알아서해줌 (FFT의 샘플개수)\n",
"\n",
"k=np.arange(NFFT) #NFFT 샘플개수만큼의 배열 (1000개의 원소)\n",
"\n",
"f0 = k*Fs/NFFT # <- NFFT 샘플개수만큼의 배열 양측파대 (double side frequency) 범위\n",
"\n",
"f0 = f0[range(math.trunc(NFFT/2))]\n",
"\n",
"Y=np.fft.fft(y)/NFFT #y(wave)를 푸리에변환한 후 1000으로 나눔\n",
"Y=Y[range(math.trunc(NFFT/2))]\n",
"#amplitude_Hz = 2*abs(Y) #\"진폭\"을 구하기위해 abs(푸리에변환한놈)x2해줌\n",
"amplitude_Hz = abs(Y) #\"진폭\"을 구하기위해 abs(푸리에변환한놈)x2해줌\n",
"phase_ang = np.angle(Y)*180/np.pi"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# amplitude....\n",
"plt.subplot(3,1,2)\n",
"\n",
"# Plot single-sided amplitude spectrum.\n",
"\n",
"plt.plot(f0,amplitude_Hz,'r') # 2* ???\n",
"plt.xticks(np.arange(0,20000,2000))\n",
"plt.xlim( 0, 20000)\n",
"plt.ylim( 0, 50)\n",
"#plt.title('Single-Sided Amplitude Spectrum of y(t)')\n",
"plt.xlabel('frequency($Hz$)')\n",
"plt.ylabel('amplitude')\n",
"plt.grid()\n",
"plt.savefig(\"sounds/test_figure%d-fft.png\"%count,dpi=300)\n",
"\n",
"\n",
"print(\"%d번 음성 FFT완료\"%count)\n",
"count = count + 1\n"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'''\n",
"Fs = 2000 # 샘플링 주파수\n",
"T = 1/Fs # 샘플링 interval time <-? \n",
"te= 5 #end of time\n",
"t = np.arange(0,te,T) # Time vector (0초부터 te초까지 T간격으로 떨어져있는 배열생성)\n",
"noise = np.random.normal(0,0.05,len(t)) \n",
"x=0.6*np.cos(2*np.pi*60*t + np.pi/2) + np.cos(2*np.pi*120*t)\n",
"y= x+noise\n",
"\n",
"'''\n",
"'''\n",
"# figure 1 ..................................\n",
"plt.figure(num=2,dpi=100,facecolor='white')\n",
"plt.subplots_adjust(hspace = 0.6, wspace = 0.3)\n",
"plt.subplot(3,1,1)\n",
"\n",
"plt.plot(t,y,'r')\n",
"plt.title('Signal FFT analysis')\n",
"plt.xlabel('time($sec$)')\n",
"plt.ylabel('y')\n",
"\n",
"#plt.xlim( 0, 0.1)\n",
"\n",
"\n",
"# Phase .... <- 이해안감\n",
"#plt.figure(num=2,dpi=100,facecolor='white')\n",
"plt.subplot(3,1,3)\n",
"plt.plot(f0,phase_ang,'r') # 2* ???\n",
"plt.xlim( 0, 200)\n",
"plt.ylim( -180, 180)\n",
"#plt.title('Single-Sided Phase Spectrum of y(t)')\n",
"plt.xlabel('frequency($Hz$)')\n",
"plt.ylabel('phase($deg.$)')\n",
"plt.xticks([0, 60, 120, 200])\n",
"plt.yticks([-180, -90, 0, 90, 180])\n",
"plt.grid()\n",
"\n",
"plt.savefig(\"./test_figure2.png\",dpi=300)\n",
"plt.show()\n",
"\n",
"'''"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}