├── README.md
├── .DS_Store
├── Chapter 1
├── .DS_Store
├── .idea
│ ├── libraries
│ │ └── R_User_Library.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── 第一章.iml
│ ├── workspace.xml
│ └── workspace-NSConflict-lei-mac10.14.2.xml
├── .ipynb_checkpoints
│ └── 第一章 HelloWorld-checkpoint.ipynb
└── 第一章 HelloWorld.ipynb
├── Chapter 2
├── .DS_Store
├── 离散时间信号
│ ├── .DS_Store
│ └── 时域中的离散时间信号.pdf
├── 离散时间系统
│ ├── .DS_Store
│ └── 离散时间系统时域.pdf
├── .ipynb_checkpoints
│ └── 离散时间傅里叶变换及其逆变换-checkpoint.ipynb
├── .idea
│ ├── misc.xml
│ ├── modules.xml
│ └── Chapter 2.iml
└── basic_operations.ipynb
├── Chapter 3
├── Vuvuzela.wav
├── .vscode
│ └── settings.json
├── anti_vuvuzela.wav
├── .idea
│ ├── libraries
│ │ └── R_User_Library.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── Chapter 3.iml
│ └── workspace.xml
├── vuvuzela_denoising.m
└── vuvuzela_denoising.m~
├── .vscode
└── settings.json
├── environment.yml
├── .idea
├── misc.xml
├── modules.xml
└── dspcourse.iml
└── 第一章 HelloWorld.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # dspcourse
2 | dspcourse
3 |
--------------------------------------------------------------------------------
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/.DS_Store
--------------------------------------------------------------------------------
/Chapter 1/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 1/.DS_Store
--------------------------------------------------------------------------------
/Chapter 2/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 2/.DS_Store
--------------------------------------------------------------------------------
/Chapter 3/Vuvuzela.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 3/Vuvuzela.wav
--------------------------------------------------------------------------------
/Chapter 3/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "python.pythonPath": "/Users/lyu/anaconda3/bin/python"
3 | }
--------------------------------------------------------------------------------
/Chapter 2/离散时间信号/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 2/离散时间信号/.DS_Store
--------------------------------------------------------------------------------
/Chapter 2/离散时间系统/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 2/离散时间系统/.DS_Store
--------------------------------------------------------------------------------
/Chapter 3/anti_vuvuzela.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 3/anti_vuvuzela.wav
--------------------------------------------------------------------------------
/Chapter 2/离散时间系统/离散时间系统时域.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 2/离散时间系统/离散时间系统时域.pdf
--------------------------------------------------------------------------------
/Chapter 2/离散时间信号/时域中的离散时间信号.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuleiwhu/dspcourse/HEAD/Chapter 2/离散时间信号/时域中的离散时间信号.pdf
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "python.pythonPath": "/Users/lyu/anaconda3/bin/python",
3 | "python.linting.pylintEnabled": true
4 | }
--------------------------------------------------------------------------------
/environment.yml:
--------------------------------------------------------------------------------
1 | name: example-environment
2 | dependencies:
3 | - numpy
4 | - scipy
5 | - matplotlib
6 | - sounddevice
7 |
8 |
--------------------------------------------------------------------------------
/Chapter 2/.ipynb_checkpoints/离散时间傅里叶变换及其逆变换-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [],
3 | "metadata": {},
4 | "nbformat": 4,
5 | "nbformat_minor": 2
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/libraries/R_User_Library.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Chapter 3/.idea/libraries/R_User_Library.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter 2/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter 3/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter 2/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter 3/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/dspcourse.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Chapter 2/.idea/Chapter 2.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Chapter 3/.idea/Chapter 3.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/第一章.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter 3/vuvuzela_denoising.m:
--------------------------------------------------------------------------------
1 | %HELP vuvuzela_denoising
2 | %
3 | %Vuvuzela cancellation with spectral subtraction technique. Based on the spectrum of the
4 | %vuvuzela only sound, this denoising technique simply computes an
5 | %antenuation map in the time-frequency domain. Then, the audio signal is
6 | %obtained by computing the inverse STFT. See [1] or [2] for
7 | %more detail about the algorithm.
8 | %
9 | %References:
10 | %
11 | %[1] Steven F. Boll, "Suppression of Acoustic Noise in Speech Using Spectral
12 | %Subtraction", IEEE Transactions on Signal Processing, 27(2),pp 113-120,
13 | %1979
14 | %
15 | %[2] Y. Ephraim and D. Malah, ?Speech enhancement using a minimum mean square error
16 | % short-time spectral amplitude estimator,? IEEE. Transactions in Acoust., Speech, Signal
17 | % Process., vol. 32, no. 6, pp. 1109?1121, Dec. 1984.
18 | %
19 | %Note: The file: Vuvuzela.wav must be located in the folder of this script file.
20 | %One can note that this time-frequency based technique creates a "musical
21 | %noise".
22 | %
23 | %Programmed by V. Choqueuse (contact: vincent.choqueuse@gmail.com)
24 |
25 | clear;close all;clc;
26 |
27 | fprintf('--- Vuvuzela Cancelation Program ---\n\n');
28 |
29 | %load vuvuzela sound example
30 | fprintf('-> Step 1/5: Load vuvuzela.wav:');
31 | [y,Fe]=audioread('Vuvuzela.wav');
32 | x=y(100000:end,1).'; %remove the beginning of the sample
33 | Nx=length(x);
34 | fprintf(' OK\n');
35 |
36 | %algorithm parameters
37 | apriori_SNR=1; %select 0 for aposteriori SNR estimation and 1 for apriori (see [2])
38 | alpha=0.05; %only used if apriori_SNR=1
39 | beta1=0.5;
40 | beta2=1;
41 | lambda=3;
42 |
43 | %STFT parameters
44 | NFFT=1024;
45 | window_length=round(0.031*Fe);
46 | window=hamming(window_length);
47 | window = window(:);
48 | overlap=floor(0.45*window_length); %number of windows samples without overlapping
49 |
50 | %Signal parameters
51 | t_min=0.4; %interval for learning the noise
52 | t_max=1.00; %spectrum (in second)
53 |
54 | %construct spectrogram
55 | [S,F,T] = spectrogram(x+i*eps,window,window_length-overlap,NFFT,Fe); %put a short imaginary part to obtain two-sided spectrogram
56 | imshow(abs(S))
57 | [Nf,Nw]=size(S);
58 |
59 | %----------------------------%
60 | % noisy spectrum %
61 | % extraction %
62 | %----------------------------%
63 | fprintf('-> Step 2/5: Extract noise spectrum -');
64 | t_index=find(T>t_min & T Step 3/5: Estimate SNR -');
74 | absS=abs(S).^2;
75 | SNR_est=max((absS./vuvuzela_specgram)-1,0); % a posteriori SNR
76 | if apriori_SNR==1
77 | SNR_est=filter((1-alpha),[1 -alpha],SNR_est); %a priori SNR: see [2]
78 | end
79 | fprintf(' OK\n');
80 |
81 | %---------------------------%
82 | % Compute attenuation map %
83 | %---------------------------%
84 | fprintf('-> Step 4/5: Compute TF attenuation map -');
85 | an_lk=max((1-lambda*((1./(SNR_est+1)).^beta1)).^beta2,0); %an_l_k or anelka, sorry stupid french joke :)
86 | STFT=an_lk.*S;
87 | fprintf(' OK\n');
88 |
89 | %--------------------------%
90 | % Compute Inverse STFT %
91 | %--------------------------%
92 | fprintf('-> Step 5/5: Compute Inverse STFT:');
93 | ind=mod((1:window_length)-1,Nf)+1;
94 | output_signal=zeros((Nw-1)*overlap+window_length,1);
95 |
96 | for indice=1:Nw %Overlapp add technique
97 | left_index=((indice-1)*overlap) ;
98 | index=left_index+[1:window_length];
99 | temp_ifft=real(ifft(STFT(:,indice),NFFT));
100 | output_signal(index)= output_signal(index)+temp_ifft(ind).*window;
101 | end
102 | fprintf(' OK\n');
103 |
104 |
105 | %----------------- Display Figure ------------------------------------
106 |
107 | %show temporal signals
108 | figure
109 | subplot(2,1,1);
110 | t_index=find(T>t_min & T Step 1/5: Load vuvuzela.wav:');
31 | [y,Fe]=audioread('Vuvuzela.wav');
32 | x=y(100000:end,1).'; %remove the beginning of the sample
33 | Nx=length(x);
34 | fprintf(' OK\n');
35 |
36 | %algorithm parameters
37 | apriori_SNR=1; %select 0 for aposteriori SNR estimation and 1 for apriori (see [2])
38 | alpha=0.05; %only used if apriori_SNR=1
39 | beta1=0.5;
40 | beta2=1;
41 | lambda=3;
42 |
43 | %STFT parameters
44 | NFFT=1024;
45 | window_length=round(0.031*Fe);
46 | window=hamming(window_length);
47 | window = window(:);
48 | overlap=floor(0.45*window_length); %number of windows samples without overlapping
49 |
50 | %Signal parameters
51 | t_min=0.4; %interval for learning the noise
52 | t_max=1.00; %spectrum (in second)
53 |
54 | %construct spectrogram
55 | [S,F,T] = spectrogram(x+i*eps,window,window_length-overlap,NFFT,Fe); %put a short imaginary part to obtain two-sided spectrogram
56 | imshow(abs(S))
57 | [Nf,Nw]=size(S);
58 |
59 | %----------------------------%
60 | % noisy spectrum %
61 | % extraction %
62 | %----------------------------%
63 | fprintf('-> Step 2/5: Extract noise spectrum -');
64 | t_index=find(T>t_min & T Step 3/5: Estimate SNR -');
74 | absS=abs(S).^2;
75 | SNR_est=max((absS./vuvuzela_specgram)-1,0); % a posteriori SNR
76 | if apriori_SNR==1
77 | SNR_est=filter((1-alpha),[1 -alpha],SNR_est); %a priori SNR: see [2]
78 | end
79 | fprintf(' OK\n');
80 |
81 | %---------------------------%
82 | % Compute attenuation map %
83 | %---------------------------%
84 | fprintf('-> Step 4/5: Compute TF attenuation map -');
85 | an_lk=max((1-lambda*((1./(SNR_est+1)).^beta1)).^beta2,0); %an_l_k or anelka, sorry stupid french joke :)
86 | STFT=an_lk.*S;
87 | fprintf(' OK\n');
88 |
89 | %--------------------------%
90 | % Compute Inverse STFT %
91 | %--------------------------%
92 | fprintf('-> Step 5/5: Compute Inverse STFT:');
93 | ind=mod((1:window_length)-1,Nf)+1;
94 | output_signal=zeros((Nw-1)*overlap+window_length,1);
95 |
96 | for indice=1:Nw %Overlapp add technique
97 | left_index=((indice-1)*overlap) ;
98 | index=left_index+[1:window_length];
99 | temp_ifft=real(ifft(STFT(:,indice),NFFT));
100 | output_signal(index)= output_signal(index)+temp_ifft(ind).*window;
101 | end
102 | fprintf(' OK\n');
103 |
104 |
105 | %----------------- Display Figure ------------------------------------
106 |
107 | %show temporal signals
108 | figure
109 | subplot(2,1,1);
110 | t_index=find(T>t_min & T
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 |
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 | 1561518799677
110 |
111 |
112 | 1561518799677
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 |
--------------------------------------------------------------------------------
/Chapter 1/.ipynb_checkpoints/第一章 HelloWorld-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "相比较Matlab而言,虽然Python没有Matlab这么完整的文档支持和专业性,但是因为Python语言本身的普及程度,特别是Python在数据处理、人工智能、图像处理等等领域的大量使用,使得Python已经成为了目前最受欢迎的程序设计语言。\n",
8 | "\n",
9 | "因此,本课程将基于Python语言设计《数字信号处理》的相关实践内容,并适当结合当前人工智能领域的相关方法,让学生在掌握DSP课程基础原理的同时,扩展知识面。本课程中的所有代码将陆续发布在Github上, 请点击[相关链接](https://github.com/yuleiwhu/dspcourse). 同时, 我们也设计了在线交互式代码设计平台([点击此处](https://mybinder.org/v2/gh/yuleiwhu/dspcourse/master)), 希望学生能在线通过编程实践, 深入理解课堂的内容. \n",
10 | "\n",
11 | "那么,本节我们将简单给出一个Python产生一个离散正弦序列的例子,并显示出来。"
12 | ]
13 | },
14 | {
15 | "cell_type": "code",
16 | "execution_count": 3,
17 | "metadata": {},
18 | "outputs": [
19 | {
20 | "data": {
21 | "image/png": "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\n",
22 | "text/plain": [
23 | ""
24 | ]
25 | },
26 | "metadata": {
27 | "needs_background": "light"
28 | },
29 | "output_type": "display_data"
30 | }
31 | ],
32 | "source": [
33 | "import matplotlib.pyplot as plt\n",
34 | "import numpy as np\n",
35 | " \n",
36 | "x = np.linspace(0.1, 2 * np.pi, 41)\n",
37 | "y = np.sin(x)\n",
38 | " \n",
39 | "plt.stem(x, y)\n",
40 | "plt.show()"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": null,
46 | "metadata": {},
47 | "outputs": [],
48 | "source": []
49 | }
50 | ],
51 | "metadata": {
52 | "kernelspec": {
53 | "display_name": "Python 3",
54 | "language": "python",
55 | "name": "python3"
56 | },
57 | "language_info": {
58 | "codemirror_mode": {
59 | "name": "ipython",
60 | "version": 3
61 | },
62 | "file_extension": ".py",
63 | "mimetype": "text/x-python",
64 | "name": "python",
65 | "nbconvert_exporter": "python",
66 | "pygments_lexer": "ipython3",
67 | "version": "3.6.7"
68 | }
69 | },
70 | "nbformat": 4,
71 | "nbformat_minor": 2
72 | }
73 |
--------------------------------------------------------------------------------
/第一章 HelloWorld.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "相比较Matlab而言,虽然Python没有Matlab这么完整的文档支持和专业性,但是因为Python语言本身的普及程度,特别是Python在数据处理、人工智能、图像处理等等领域的大量使用,使得Python已经成为了目前最受欢迎的程序设计语言。\n",
8 | "\n",
9 | "因此,本课程将基于Python语言设计《数字信号处理》的相关实践内容,并适当结合当前人工智能领域的相关方法,让学生在掌握DSP课程基础原理的同时,扩展知识面。本课程中的所有代码将陆续发布在Github上, 请点击[相关链接](https://github.com/yuleiwhu/dspcourse). 同时, 我们也设计了在线交互式代码设计平台\n",
10 | "[](https://mybinder.org/v2/gh/yuleiwhu/dspcourse/master)\n",
11 | "\n",
12 | "希望学生能在线通过编程实践, 深入理解课堂的内容. \n",
13 | "\n",
14 | "那么,本节我们将简单给出一个Python产生一个离散正弦序列的例子,并显示出来。"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 3,
20 | "metadata": {},
21 | "outputs": [
22 | {
23 | "data": {
24 | "image/png": "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\n",
25 | "text/plain": [
26 | ""
27 | ]
28 | },
29 | "metadata": {
30 | "needs_background": "light"
31 | },
32 | "output_type": "display_data"
33 | }
34 | ],
35 | "source": [
36 | "import matplotlib.pyplot as plt\n",
37 | "import numpy as np\n",
38 | " \n",
39 | "x = np.linspace(0.1, 2 * np.pi, 41)\n",
40 | "y = np.sin(x)\n",
41 | " \n",
42 | "plt.stem(x, y)\n",
43 | "plt.show()"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": null,
49 | "metadata": {},
50 | "outputs": [],
51 | "source": []
52 | }
53 | ],
54 | "metadata": {
55 | "kernelspec": {
56 | "display_name": "Python 3",
57 | "language": "python",
58 | "name": "python3"
59 | },
60 | "language_info": {
61 | "codemirror_mode": {
62 | "name": "ipython",
63 | "version": 3
64 | },
65 | "file_extension": ".py",
66 | "mimetype": "text/x-python",
67 | "name": "python",
68 | "nbconvert_exporter": "python",
69 | "pygments_lexer": "ipython3",
70 | "version": "3.6.7"
71 | }
72 | },
73 | "nbformat": 4,
74 | "nbformat_minor": 2
75 | }
76 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/workspace.xml:
--------------------------------------------------------------------------------
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 | 1558953716161
263 |
264 |
265 | 1558953716161
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
--------------------------------------------------------------------------------
/Chapter 1/.idea/workspace-NSConflict-lei-mac10.14.2.xml:
--------------------------------------------------------------------------------
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 |
273 |
274 |
275 |
276 |
277 | 1558953716161
278 |
279 |
280 | 1558953716161
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
--------------------------------------------------------------------------------
/Chapter 1/第一章 HelloWorld.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "相比较Matlab而言,虽然Python没有Matlab这么完整的文档支持和专业性,但是因为Python语言本身的普及程度,特别是Python在数据处理、人工智能、图像处理等等领域的大量使用,使得Python已经成为了目前最受欢迎的程序设计语言。\n",
8 | "\n",
9 | "因此,本课程将基于Python语言设计《数字信号处理》的相关实践内容,并适当结合当前人工智能领域的相关方法,让学生在掌握DSP课程基础原理的同时,扩展知识面。本课程中的所有代码将陆续发布在Github上, 请点击[相关链接](https://github.com/yuleiwhu/dspcourse). 同时, 我们也设计了在线交互式代码设计平台\n",
10 | "[](https://mybinder.org/v2/gh/yuleiwhu/dspcourse/master)\n",
11 | "\n",
12 | "希望学生能在线通过编程实践, 深入理解课堂的内容. \n",
13 | "\n",
14 | "那么,本节我们将简单给出一个Python产生一个离散正弦序列的例子,并显示出来。"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 4,
20 | "metadata": {},
21 | "outputs": [
22 | {
23 | "data": {
24 | "image/png": "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\n",
25 | "text/plain": [
26 | ""
27 | ]
28 | },
29 | "metadata": {
30 | "needs_background": "light"
31 | },
32 | "output_type": "display_data"
33 | },
34 | {
35 | "data": {
36 | "text/plain": [
37 | "[]"
38 | ]
39 | },
40 | "execution_count": 4,
41 | "metadata": {},
42 | "output_type": "execute_result"
43 | },
44 | {
45 | "data": {
46 | "image/png": "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\n",
47 | "text/plain": [
48 | ""
49 | ]
50 | },
51 | "metadata": {
52 | "needs_background": "light"
53 | },
54 | "output_type": "display_data"
55 | }
56 | ],
57 | "source": [
58 | "import matplotlib.pyplot as plt\n",
59 | "import numpy as np\n",
60 | " \n",
61 | "x = np.linspace(0.1, 2 * np.pi, 41)\n",
62 | "y = np.sin(x)\n",
63 | " \n",
64 | "plt.stem(x, y)\n",
65 | "plt.show()\n",
66 | "\n",
67 | "plt.plot(x,y)"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "execution_count": null,
73 | "metadata": {},
74 | "outputs": [],
75 | "source": []
76 | }
77 | ],
78 | "metadata": {
79 | "kernelspec": {
80 | "display_name": "Python 3",
81 | "language": "python",
82 | "name": "python3"
83 | },
84 | "language_info": {
85 | "codemirror_mode": {
86 | "name": "ipython",
87 | "version": 3
88 | },
89 | "file_extension": ".py",
90 | "mimetype": "text/x-python",
91 | "name": "python",
92 | "nbconvert_exporter": "python",
93 | "pygments_lexer": "ipython3",
94 | "version": "3.6.7"
95 | }
96 | },
97 | "nbformat": 4,
98 | "nbformat_minor": 2
99 | }
100 |
--------------------------------------------------------------------------------
/Chapter 2/basic_operations.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "collapsed": true
7 | },
8 | "source": [
9 | "加载画图和科学计算包"
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": 4,
15 | "metadata": {
16 | "collapsed": true
17 | },
18 | "outputs": [
19 | {
20 | "data": {
21 | "image/png": "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\n",
22 | "text/plain": [
23 | ""
24 | ]
25 | },
26 | "metadata": {},
27 | "output_type": "display_data"
28 | }
29 | ],
30 | "source": [
31 | "\n",
32 | "import matplotlib.pyplot as plt\n",
33 | "import numpy as np\n"
34 | ]
35 | },
36 | {
37 | "cell_type": "markdown",
38 | "metadata": {
39 | "collapsed": true
40 | },
41 | "source": [
42 | "产生$0.1\\sim 2\\pi$的正弦信号和幅度为1的常数信号"
43 | ]
44 | },
45 | {
46 | "cell_type": "code",
47 | "execution_count": 15,
48 | "metadata": {
49 | "collapsed": true
50 | },
51 | "outputs": [
52 | {
53 | "data": {
54 | "image/png": "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\n",
55 | "text/plain": [
56 | ""
57 | ]
58 | },
59 | "metadata": {},
60 | "output_type": "display_data"
61 | }
62 | ],
63 | "source": [
64 | "\n",
65 | "x = np.linspace(0.1, 2 * np.pi, 41)\n",
66 | "y1 = np.sin(x)\n",
67 | "y2 = np.cos(2*x)"
68 | ]
69 | },
70 | {
71 | "cell_type": "markdown",
72 | "metadata": {
73 | "collapsed": true
74 | },
75 | "source": [
76 | "##1. 相加、减运算"
77 | ]
78 | },
79 | {
80 | "cell_type": "code",
81 | "execution_count": 16,
82 | "metadata": {
83 | "collapsed": false
84 | },
85 | "outputs": [
86 | {
87 | "data": {
88 | "image/png": "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\n",
89 | "text/plain": [
90 | ""
91 | ]
92 | },
93 | "metadata": {},
94 | "output_type": "display_data"
95 | }
96 | ],
97 | "source": [
98 | "y = y1 + y2\n",
99 | "yy = y1 - y2\n",
100 | "plt.subplot(121)\n",
101 | "plt.stem(x, y)\n",
102 | "plt.subplot(122)\n",
103 | "plt.stem(x, yy)\n",
104 | "plt.show()"
105 | ]
106 | },
107 | {
108 | "cell_type": "markdown",
109 | "metadata": {},
110 | "source": [
111 | "## 2. 相乘、除"
112 | ]
113 | },
114 | {
115 | "cell_type": "code",
116 | "execution_count": 17,
117 | "metadata": {},
118 | "outputs": [
119 | {
120 | "data": {
121 | "image/png": "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\n",
122 | "text/plain": [
123 | ""
124 | ]
125 | },
126 | "metadata": {},
127 | "output_type": "display_data"
128 | }
129 | ],
130 | "source": [
131 | "y = y1 * y2 # element-wise multiplication\n",
132 | "yy = y1 / y2 # element-wise division\n",
133 | "plt.subplot(121)\n",
134 | "plt.stem(x, y)\n",
135 | "plt.subplot(122)\n",
136 | "plt.stem(x, yy)\n",
137 | "plt.show()"
138 | ]
139 | },
140 | {
141 | "cell_type": "markdown",
142 | "metadata": {},
143 | "source": [
144 | "## 4. 序列的平移和翻转"
145 | ]
146 | },
147 | {
148 | "cell_type": "markdown",
149 | "metadata": {
150 | "collapsed": false
151 | },
152 | "source": [
153 | "循环平移函数"
154 | ]
155 | },
156 | {
157 | "cell_type": "code",
158 | "execution_count": 52,
159 | "metadata": {},
160 | "outputs": [],
161 | "source": [
162 | "def cshift(key,array):\n",
163 | " return np.append(array[-key:],array[:-key])"
164 | ]
165 | },
166 | {
167 | "cell_type": "markdown",
168 | "metadata": {},
169 | "source": [
170 | "线性平移"
171 | ]
172 | },
173 | {
174 | "cell_type": "code",
175 | "execution_count": 51,
176 | "metadata": {},
177 | "outputs": [],
178 | "source": [
179 | "def lshift(key,array):\n",
180 | " if key<0:\n",
181 | " return np.append(array[-key:],np.zeros([-key]))\n",
182 | " else:\n",
183 | " return np.append(np.zeros([key]),array[:-key])"
184 | ]
185 | },
186 | {
187 | "cell_type": "code",
188 | "execution_count": 55,
189 | "metadata": {},
190 | "outputs": [],
191 | "source": [
192 | "ylr = np.flipud(y1) # flip left and right\n",
193 | "yls = lshift(-10,y1) # left shift\n",
194 | "yrs = lshift(10,y1) # right shift "
195 | ]
196 | },
197 | {
198 | "cell_type": "code",
199 | "execution_count": 57,
200 | "metadata": {
201 | "collapsed": false
202 | },
203 | "outputs": [
204 | {
205 | "data": {
206 | "image/png": "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\n",
207 | "text/plain": [
208 | ""
209 | ]
210 | },
211 | "metadata": {},
212 | "output_type": "display_data"
213 | }
214 | ],
215 | "source": [
216 | "plt.subplot(221)\n",
217 | "plt.title('Original')\n",
218 | "plt.stem(x, y1)\n",
219 | "plt.subplot(222)\n",
220 | "plt.title('Reversal')\n",
221 | "plt.stem(x, ylr)\n",
222 | "plt.subplot(223)\n",
223 | "plt.title('Linear Shift -10')\n",
224 | "plt.stem(x, yls)\n",
225 | "plt.subplot(224)\n",
226 | "plt.title('Linear Shift 10')\n",
227 | "plt.stem(x, yrs)\n",
228 | "plt.show()"
229 | ]
230 | },
231 | {
232 | "cell_type": "code",
233 | "execution_count": null,
234 | "metadata": {},
235 | "outputs": [],
236 | "source": []
237 | }
238 | ],
239 | "metadata": {
240 | "kernelspec": {
241 | "display_name": "Python 2",
242 | "language": "python",
243 | "name": "python2"
244 | },
245 | "language_info": {
246 | "codemirror_mode": {
247 | "name": "ipython",
248 | "version": 2
249 | },
250 | "file_extension": ".py",
251 | "mimetype": "text/x-python",
252 | "name": "python",
253 | "nbconvert_exporter": "python",
254 | "pygments_lexer": "ipython2",
255 | "version": "2.7.6"
256 | }
257 | },
258 | "nbformat": 4,
259 | "nbformat_minor": 0
260 | }
261 |
--------------------------------------------------------------------------------