出版時間:2012-1 出版社:清華大學(xué)出版社 作者:張若愚 頁數(shù):621
Tag標(biāo)簽:無
前言
前 言 Python是一種面向?qū)ο蟮?、動態(tài)的程序設(shè)計語言,具有非常簡潔而清晰的語法,既可以用于快速開發(fā)程序腳本,也可以用于開發(fā)大規(guī)模的軟件,特別適合于完成各種高層任務(wù)?! ‰S著NumPy、SciPy、matplotlib、ETS①等眾多程序庫的開發(fā),Python越來越適合于做科學(xué)計算。與科學(xué)計算領(lǐng)域最流行的商業(yè)軟件MATLAB相比,Python是一門真正的通用程序設(shè)計語言,比MATLAB所采用的腳本語言的應(yīng)用范圍更廣泛,有更多程序庫的支持,適用于Windows和Linux等多種平臺,完全免費(fèi)并且開放源碼。雖然MATLAB中的某些高級功能目前還無法替代,但是對于基礎(chǔ)性、前瞻性的科研工作和應(yīng)用系統(tǒng)的開發(fā),完全可以用Python來完成?! ”緯榻B如何用Python開發(fā)科學(xué)計算的應(yīng)用程序,除了介紹數(shù)值計算之外,還著重介紹了如何制作交互式二維、三維圖像,如何設(shè)計精巧的程序界面,如何與C語言編寫的高速計算程序結(jié)合,如何編寫聲音、圖像處理算法等內(nèi)容。 由于Python的相關(guān)資源非常多,本書不可能全部涉及,相信讀者在掌握本書所介紹的一些相關(guān)知識之后,只要充分利用互聯(lián)網(wǎng)的搜索功能,就一定能夠很快地找到合適的Python解決方案。此外,由于絕大多數(shù)Python資源都開放源代碼,因此讀者將會很容易地對感興趣的內(nèi)容進(jìn)行深度挖掘和研究?! ”緯m合于工科高年級本科生、研究生、工程技術(shù)人員以及計算機(jī)開發(fā)人員閱讀。實(shí)例篇以信號處理為主,通過簡單易懂的Python源程序,實(shí)際演示信號處理的一些基礎(chǔ)知識和原理,因此特別適合于相關(guān)專業(yè)的學(xué)生作為擴(kuò)展視野的補(bǔ)充閱讀教材?! ¢喿x本書的讀者需要掌握Python語言的一些基礎(chǔ)知識,下面是一個“自我檢測列表”,如果讀者熟悉下述內(nèi)容,閱讀本書的實(shí)例源代碼就應(yīng)該沒有困難。此外由于Python程序簡單易讀,即使讀者沒有接觸過Python,也可以邊閱讀本書邊通過其他書籍或免費(fèi)教程學(xué)習(xí)Python。 ● 基本語法:庫的載入(import)、循環(huán)(for、while)、判斷(if)、函數(shù)定義(def) ● 基本數(shù)據(jù)類型的用法:列表(list)、字典(dict)、元組(tuple)、字符串 ● 面向?qū)ο蟮幕菊Z法:類(class)、繼承 ● C語言編程的基礎(chǔ)知識② 有關(guān)Python語言的基礎(chǔ)知識,可以參考啄木鳥社區(qū)的Python圖書簡介?! ∽哪绝B社區(qū)的Python圖書概覽 本書所有演示程序,均在Windows XP系統(tǒng)下采用Python(x,y)通過測試。如果讀者覺得安裝眾多的Python程序庫很麻煩,不妨下載安裝Python(x,y),或者直接使用本書所附光盤中的Python(x,y)安裝程序。
內(nèi)容概要
本書介紹如何用Python開發(fā)科學(xué)計算的應(yīng)用程序,除了介紹數(shù)值計算之外,還著重介紹如何制作交互式的2D、3D圖像,如何設(shè)計精巧的程序界面,如何與C語言編寫的高速計算程序結(jié)合,如何編寫聲音、圖像處理算法等內(nèi)容。書中涉及的Python擴(kuò)展庫包括NumPy、SciPy、SymPy、matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的應(yīng)用領(lǐng)域包括數(shù)值運(yùn)算、符號運(yùn)算、二維圖表、三維數(shù)據(jù)可視化、三維動畫演示、圖像處理以及界面設(shè)計等。
書中以大量實(shí)例引導(dǎo)讀者逐步深入學(xué)習(xí),每個實(shí)例程序都有詳盡的解釋,并都能在本書推薦的運(yùn)行環(huán)境中正常運(yùn)行。此外,本書附有大量的圖表和插圖,力求減少長篇的理論介紹和公式推導(dǎo),以便讀者通過實(shí)例和數(shù)據(jù)學(xué)習(xí)并掌握理論知識。
作者簡介
張若愚,畢業(yè)于華中理工大學(xué)(現(xiàn)華中科技大學(xué))通信工程專業(yè),2004年獲日本姬路工業(yè)大學(xué)(現(xiàn)兵庫縣立大學(xué))碩士學(xué)位。畢業(yè)后于日本神戶制鋼綜合研究所從事研究開發(fā)工作至今,研究方向?yàn)椋呵度胧紻SP信號處理系統(tǒng)開發(fā),嵌入式MCU控制系統(tǒng)開發(fā),工業(yè)控制軟件開發(fā),信號處理、數(shù)據(jù)處理以及生產(chǎn)系統(tǒng)的計算機(jī)模擬。在工作中他積極采用Python作為主要編程語言,在數(shù)據(jù)處理、信號分析、工業(yè)控制、算法模擬等領(lǐng)域取得了較好的研究成果。已完成的研究課題有:嵌入式聲音分離系統(tǒng)、車載音響設(shè)備、超聲波探傷系統(tǒng)、壓縮機(jī)系統(tǒng)的數(shù)字模擬等。
書籍目錄
第1章 軟件包的安裝和介紹1
1.1 Python簡介1
1.2 安裝軟件包2
1.2.1 Python(x,y)2
1.2.2 Enthought Python Distribution
(EPD)3
1.3 方便的開發(fā)工具3
1.3.1 IPython4
1.3.2 Spyder8
1.3.3 Wing IDE 10112
1.4 函數(shù)庫介紹13
1.4.1 數(shù)值計算庫13
1.4.2 符號計算庫14
1.4.3 界面設(shè)計14
1.4.4 繪圖與可視化14
1.4.5 圖像處理和計算機(jī)視覺15
第2章 NumPy——快速處理數(shù)據(jù)16
2.1 ndarray對象16
2.1.1 創(chuàng)建數(shù)組16
2.1.2 存取元素21
2.1.3 多維數(shù)組24
2.1.4 結(jié)構(gòu)數(shù)組29
2.1.5 內(nèi)存結(jié)構(gòu)32
2.2 ufunc運(yùn)算35
2.2.1 四則運(yùn)算37
2.2.2 比較和布爾運(yùn)算39
2.2.3 自定義ufunc函數(shù)40
2.2.4 廣播42
2.2.5 ufunc函數(shù)的方法46
2.3 多維數(shù)組的下標(biāo)存取48
2.3.1 下標(biāo)對象48
2.3.2 整數(shù)數(shù)組作為下標(biāo)49
2.3.3 一個復(fù)雜的例子51
2.3.4 布爾數(shù)組作為下標(biāo)53
2.4 龐大的函數(shù)庫54
2.4.1 求和、平均值、方差54
2.4.2 最值和排序55
2.4.3 多項(xiàng)式函數(shù)57
2.4.4 分段函數(shù)60
2.4.5 統(tǒng)計函數(shù)62
2.5 線性代數(shù)65
2.5.1 各種乘積運(yùn)算65
2.5.2 解線性方程組67
2.6 掩碼數(shù)組69
2.7 文件存取72
2.8 內(nèi)存映射數(shù)組75
第3章 SciPy——數(shù)值計算庫79
3.1 常數(shù)和特殊函數(shù)79
3.2 優(yōu)化——optimize81
3.2.1 最小二乘擬合81
3.2.2 函數(shù)最小值84
3.2.3 非線性方程組求解86
3.3 插值——interpolate88
3.3.1 B樣條曲線插值88
3.3.2 外推和Spline擬合90
3.3.3 二維插值91
3.4 數(shù)值積分——integrate93
3.4.1 球的體積93
3.4.2 解常微分方程組95
3.5 信號處理——signal97
3.5.1 中值濾波97
3.5.2 濾波器設(shè)計98
3.6 圖像處理——ndimage100
3.6.1 膨脹和腐蝕101
3.6.2 Hit和Miss102
3.7 統(tǒng)計——stats105
3.7.1 連續(xù)和離散概率分布105
3.7.2 二項(xiàng)、泊松、伽瑪分布108
3.8 嵌入C語言程序——weave112
第4章 SymPy——符號運(yùn)算好幫手115
4.1 從例子開始115
4.1.1 封面上的經(jīng)典公式115
4.1.2 球體體積117
4.2 數(shù)學(xué)表達(dá)式119
4.2.1 符號119
4.2.2 數(shù)值121
4.2.3 運(yùn)算符和函數(shù)122
4.3 符號運(yùn)算125
4.3.1 表達(dá)式變換和化簡125
4.3.2 方程128
4.3.3 微分129
4.3.4 微分方程130
4.3.5 積分131
4.4 其他功能133
4.4.1 平面幾何133
4.4.2 繪圖135
第5章 matplotlib——繪制精美
的圖表139
5.1 快速繪圖139
5.1.1 使用pyplot模塊繪圖139
5.1.2 以面向?qū)ο蠓绞嚼L圖142
5.1.3 配置屬性143
5.1.4 繪制多個子圖145
5.1.5 配置文件147
5.1.6 在圖表中顯示中文149
5.2 Artist對象152
5.2.1 Artist對象的屬性154
5.2.2 Figure容器155
5.2.3 Axes容器156
5.2.4 Axis容器159
5.2.5 Artist對象的關(guān)系163
5.3 坐標(biāo)變換和注釋164
5.3.1 4種坐標(biāo)系167
5.3.2 坐標(biāo)變換的步驟169
5.3.3 制作陰影效果173
5.3.4 添加注釋174
5.4 繪圖函數(shù)簡介177
5.4.1 對數(shù)坐標(biāo)圖177
5.4.2 極坐標(biāo)圖178
5.4.3 柱狀圖179
5.4.4 散列圖180
5.4.5 圖像181
5.4.6 等值線圖184
5.4.7 三維繪圖187
第6章 Traits——為Python添加類型
定義190
6.1 開發(fā)背景190
6.2 Trait屬性的功能192
6.3 Trait類型對象196
6.4 Trait的元數(shù)據(jù)198
6.5 預(yù)定義的Trait類型200
6.6 Property屬性204
6.7 Trait屬性監(jiān)聽206
6.8 Event和Button屬性210
6.9 Trait屬性的從屬關(guān)系211
6.10 動態(tài)添加Trait屬性213
6.11 創(chuàng)建自己的Trait類型215
6.11.1 從TraitType繼承215
6.11.2 使用Trait()217
6.11.3 定義TraitHandler類219
第7章 TraitsUI——輕松制作用戶
界面221
7.1 默認(rèn)界面221
7.2 用View定義界面222
7.2.1 外部視圖和內(nèi)部視圖222
7.2.2 多模型視圖226
7.2.3 Group對象228
7.2.4 配置視圖231
7.3 用Handler控制界面和模型232
7.3.1 用Handler處理事件233
7.3.2 Controller和UIInfo對象237
7.3.3 響應(yīng)Trait屬性的事件238
7.4 屬性編輯器240
7.4.1 編輯器演示程序241
7.4.2 對象編輯器243
7.4.3 字符串列表編輯器248
7.4.4 對象列表編輯器250
7.5 菜單、工具條和狀態(tài)欄252
7.6 設(shè)計自己的編輯器255
7.6.1 Trait編輯器的工作原理255
7.6.2 制作matplotlib的編輯器259
7.6.3 CSV數(shù)據(jù)繪圖工具262
第8章 Chaco——交互式圖表264
8.1 面向腳本繪圖264
8.2 面向應(yīng)用繪圖265
8.2.1 多條曲線267
8.2.2 Plot對象的結(jié)構(gòu)271
8.2.3 編輯繪圖屬性275
8.2.4 容器(Container)276
8.3 添加交互工具279
8.3.1 平移和縮放279
8.3.2 選取范圍282
8.3.3 選取數(shù)據(jù)點(diǎn)284
8.3.4 套索工具287
8.4 二次開發(fā)289
8.4.1 用Kiva庫在數(shù)組上繪圖290
8.4.2 Enable庫的組件292
8.4.3 設(shè)計圓形選擇工具297
8.4.4 制作動畫演示301
第9章 TVTK——數(shù)據(jù)的三維可視化303
9.1 流水線(Pipeline)304
9.1.1 顯示圓錐304
9.1.2 用ivtk觀察流水線307
9.2 數(shù)據(jù)集(Dataset)313
9.2.1 ImageData313
9.2.2 RectilinearGrid318
9.2.3 StructuredGrid319
9.2.4 PolyData321
9.3 可視化實(shí)例324
9.3.1 切面325
9.3.2 等值面330
9.3.3 流線333
9.4 TVTK的改進(jìn)337
9.4.1 TVTK的基本用法338
9.4.2 Trait屬性339
9.4.3 序列化(Pickling)339
9.4.4 集合迭代340
9.4.5 數(shù)組操作341
第10章 Mayavi——更方便的可視化343
10.1 用mlab快速繪圖343
10.1.1 點(diǎn)和線343
10.1.2 Mayavi的流水線345
10.1.3 二維圖像的可視化348
10.1.4 網(wǎng)格面352
10.1.5 修改和控制流水線356
10.1.6 標(biāo)量場358
10.1.7 矢量場361
10.2 Mayavi和TVTK之間
的關(guān)系363
10.2.1 顯示TVTK流水線363
10.2.2 兩條流水線之間的關(guān)系365
10.3 Mayavi應(yīng)用程序367
10.3.1 操作流水線368
10.3.2 命令行和對象瀏覽器371
10.4 將Mayavi嵌入到界面中374
第11章 VPython——制作3D演示
動畫378
11.1 場景、物體和照相機(jī)378
11.1.1 控制場景窗口380
11.1.2 控制照相機(jī)383
11.1.3 模型的屬性384
11.1.4 三維模型387
11.2 制作動畫演示390
11.2.1 簡單動畫390
11.2.2 盒子中反彈的球391
11.3 與場景交互393
11.3.1 響應(yīng)鍵盤事件394
11.3.2 響應(yīng)鼠標(biāo)事件394
11.4 用界面控制場景397
11.5 創(chuàng)建復(fù)雜模型400
11.5.1 faces()的用法400
11.5.2 讀入模型數(shù)據(jù)402
第12章 OpenCV——圖像處理和計算機(jī)
視覺408
12.1 存儲圖像數(shù)據(jù)的Mat對象409
12.1.1 Mat對象和NumPy數(shù)組410
12.1.2 像素點(diǎn)類型414
12.1.3 其他數(shù)據(jù)類型415
12.1.4 Vector類型417
12.1.5 在圖像上繪圖418
12.2 圖像處理421
12.2.1 二維卷積421
12.2.2 形態(tài)學(xué)運(yùn)算424
12.2.3 填充——floodFill426
12.2.4 去瑕疵——inpaint427
12.3 圖像變換428
12.3.1 幾何變換428
12.3.2 重映射——remap430
12.3.3 直方圖統(tǒng)計433
12.3.4 二維離散傅立葉變換437
12.4 圖像識別440
12.4.1 用霍夫變換檢測直線
和圓440
12.4.2 圖像分割444
12.4.3 用SURF進(jìn)行特征匹配450
第13章 數(shù)據(jù)和文件453
13.1 聲音的輸入輸出453
13.1.1 讀寫WAV文件453
13.1.2 用pyAudio播放和錄音456
13.2 視頻的輸入輸出459
13.2.1 讀寫視頻文件459
13.2.2 安裝視頻編碼464
13.3 讀寫HDF5文件465
13.4 讀寫Excel文件469
13.4.1 寫Excel文件469
13.4.2 讀Excel文件471
第14章 數(shù)字信號系統(tǒng)473
14.1 FIR和IIR濾波器473
14.2 FIR濾波器設(shè)計477
14.2.1 用firwin()設(shè)計濾波器479
14.2.2 用remez()設(shè)計濾波器481
14.2.3 濾波器的級聯(lián)483
14.3 IIR濾波器設(shè)計485
14.3.1 巴特沃斯低通濾波器485
14.3.2 雙線性變換487
14.3.3 濾波器的頻帶轉(zhuǎn)換490
14.4 數(shù)字濾波器的頻率響應(yīng)494
14.5 二次均衡濾波器設(shè)計工具497
14.6 零相位濾波器500
14.7 重取樣501
第15章 頻域信號處理505
15.1 FFT演示程序505
15.1.1 FFT知識復(fù)習(xí)505
15.1.2 合成時域信號509
15.1.3 三角波FFT演示程序511
15.2 觀察信號的頻譜512
15.2.1 窗函數(shù)515
15.2.2 頻譜平均517
15.2.3 譜圖519
15.3 卷積運(yùn)算522
15.3.1 快速卷積522
15.3.2 分段運(yùn)算524
15.4 信號處理526
15.4.1 基本框架527
15.4.2 頻域?yàn)V波器528
15.4.3 頻率變調(diào)處理530
15.4.4 用譜圖差減法降噪531
15.5 Hilbert變換532
第16章 用C語言提高計算效率537
16.1 用ctypes調(diào)用DLL庫537
16.2 用Weave嵌入C++程序541
16.2.1 Weave的工作原理541
16.2.2 處理NumPy數(shù)組543
16.2.3 使用blitz()提速546
16.2.4 擴(kuò)展模塊548
16.3 用Cython將Python編譯
成C549
16.3.1 編譯Cython程序549
16.3.2 提高計算效率550
16.3.3 快速訪問NumPy數(shù)組553
16.4 用SWIG創(chuàng)建擴(kuò)展模塊555
16.4.1 SWIG的調(diào)用方法
和實(shí)例555
16.4.2 SWIG基礎(chǔ)558
16.4.3 SWIG處理NumPy數(shù)組566
第17章 自適應(yīng)濾波器571
17.1 自適應(yīng)濾波器簡介571
17.1.1 系統(tǒng)識別571
17.1.2 信號預(yù)測572
17.1.3 信號均衡572
17.2 NLMS計算公式573
17.3 用NumPy實(shí)現(xiàn)NLMS算法575
17.3.1 系統(tǒng)辨識模擬577
17.3.2 信號均衡模擬579
17.3.3 卷積逆運(yùn)算581
17.4 用C語言加速NLMS運(yùn)算583
17.4.1 用SWIG編寫擴(kuò)展模塊583
17.4.2 用Weave嵌入C++程序586
第18章 單擺和雙擺模擬588
18.1 單擺模擬588
18.1.1 小角度時的擺動周期589
18.1.2 大角度時的擺動周期590
18.2 雙擺模擬592
18.2.1 公式推導(dǎo)592
18.2.2 微分方程的數(shù)值解595
18.2.3 動畫演示598
第19章 分形幾何599
19.1 Mandelbrot集合599
19.1.1 使用NumPy加速計算601
19.1.2 使用Weave加速計算603
19.1.3 連續(xù)的逃逸時間604
19.1.4 Mandelbrot演示程序605
19.2 迭代函數(shù)系統(tǒng)(IFS)606
19.2.1 二維仿射變換610
19.2.2 迭代函數(shù)系統(tǒng)設(shè)計器610
19.3 L-System分形613
19.4 分形山脈616
19.4.1 一維中點(diǎn)移位法616
19.4.2 二維中點(diǎn)移位法618
19.4.3 菱形方形算法619
章節(jié)摘錄
版權(quán)頁:插圖:為了減少計算時間,我們不在迭代循環(huán)中計算選擇迭代方程的隨機(jī)數(shù),而是事先通過每個迭代方程的概率,計算出選擇數(shù)組select。注意這里使用accumulate()先將概率累加,然后產(chǎn)生一組0到1之間的隨機(jī)數(shù),通過判斷隨機(jī)數(shù)所在的區(qū)間來選擇不同的方程下標(biāo)。也可以使用SciPy的stats模塊中的離散隨機(jī)變量來產(chǎn)生這個隨機(jī)下標(biāo)數(shù)組。最后通過scattero將得到的坐標(biāo)點(diǎn)繪制成散列圖。其中:s參數(shù)是每個散列點(diǎn)的大小,因?yàn)槲覀円L制10萬個點(diǎn),為了提高繪圖速度,我們選擇點(diǎn)的大小為1個像素;c參數(shù)是點(diǎn)的顏色,這里選擇綠色;marker參數(shù)是點(diǎn)的形狀,“s”表示正方形,方形的繪制是最陜的:linewidths參數(shù)是點(diǎn)的邊框?qū)挾龋?表示沒有邊框。此外,c參數(shù)還可以傳入一個數(shù)組,作為每個點(diǎn)的顏色值。我們將計算坐標(biāo)的公式下標(biāo)傳入,這樣可以直觀地看出點(diǎn)是由哪個公式迭代產(chǎn)生的。
媒體關(guān)注與評論
在書中,作者為我們介紹了科學(xué)計算編程所需的各個方面。從NumPy庫和SciPy算法工具庫的基礎(chǔ)開始,介紹了任何科學(xué)計算應(yīng)用程序所需的基本工具。之后,作者很恰當(dāng)?shù)亟榻B了二維繪圖以及三維可視化庫——matplotlib、Chaco和Mayavi。用Traits和TraitsUI進(jìn)行應(yīng)用程序和界面開發(fā),以及用Cython、Weave、ctypes和SWIG等與傳統(tǒng)的C語言庫相互結(jié)合等內(nèi)容在書中也有很好的介紹。除了這些核心的工具之外,本書還介紹了使用SymPy進(jìn)行數(shù)學(xué)符號運(yùn)算以及其他的各種有用的主題。——Eric Jones
編輯推薦
《Python科學(xué)計算》主要特色:如果您有一定的Python編程經(jīng)驗(yàn),經(jīng)常需要對數(shù)值數(shù)據(jù)做一些處理、分析、可視化的工作,那么《Python科學(xué)計算》的內(nèi)容十分適合您閱讀。如果您是程序員,即使工作與科學(xué)計算無關(guān),《Python科學(xué)計算》所介紹的各種擴(kuò)展庫也將能豐富您的工具箱,為您的工作提供新的解決方案。如果您是科研人員,即使對Python或編程并不十分了解,但只要花一點(diǎn)時間學(xué)習(xí)Python語言以及《Python科學(xué)計算》介紹的內(nèi)容,就能讓您的工作效率大幅提高。附贈光盤中包含書中用到的Python擴(kuò)展程序、學(xué)習(xí)《Python科學(xué)計算》時用到的工具軟件以及書中所有實(shí)例的源程序。歷時三年,精心編寫。Enthought公司CEO Eric Jones作序推薦,《Python科學(xué)計算》所提供的一站式服務(wù),能夠指導(dǎo)讀者從最初的入門直到創(chuàng)建一個漂亮的、全功能的分析與模擬應(yīng)用程序。NumPy——快速處理數(shù)據(jù),SymPy——符號運(yùn)算好幫手,Traits——為Python添加類型定義,Chaco——交互式圖表,Mayavi——更方便的可視化,OpenCV——圖像處理和計算機(jī)視覺,數(shù)字信號、濾波器、頻域處理,用C語言提高計算效率,SciPy——數(shù)值計算庫,matplotlib——繪制精美的圖表,TraitsUI——輕松制作用戶界面,TVTK——數(shù)據(jù)的三維可視化,VPython——制作3D演示動畫,聲音與視頻數(shù)據(jù)處理,動畫模擬、分形幾何。《Python科學(xué)計算》讀者對象:《Python科學(xué)計算》適合科研人員閱讀,但書中介紹的NumPy數(shù)據(jù)處理、matpltlib繪圖、TraltsUI界面應(yīng)用程序開發(fā)、各種格式的數(shù)據(jù)文件的處理以及用C語言編寫擴(kuò)展等內(nèi)容,并非局限于科學(xué)計算領(lǐng)域,也適合一般的Python開發(fā)人員閱讀。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載