自然科學類

---
相關購書資訊(請參考以下連結):

  •   IDL(Interactive Data Language)是一個直譯互動式的電腦語言,在科學和工程上已經有廣泛的應用,尤其是在醫學和遙測方面。其指令的語法簡單易懂,接近人類的思考方式,容易學習;其計算和繪圖的功能強大,可幫忙解決複雜的工作需求,所以深受科學家和工程師的喜愛。
      本書特色
    適合IDL初學者的教科書
    可做為IDL專業使用者的參考書
    提供大量的圖表和範例,幫助讀者學習且活用IDL的指令
    各章具有獨立性和完整性,可跳躍閱讀
    IDL 8.x / 7.x / 6.x全適用
  • 許志浤
    作者
    許志浤

    1961年生於台南市

    學歷:

    國立中央大學大氣物理碩士

    美國阿拉斯加大學太空物理博士

    經歷:

    國立中央大學 太空科學研究所 博士後副研究員

    日本名古屋大學 太陽地球環境研究所 講師

    美國約翰霍普金斯大學 應用物理研究所 資深研究員

    目前是國立中央大學 太空科學研究所 教授兼所長

    專長:

    資料分析與模式化、太空物理
  • ◎前言

    ◎第一篇 基本語法

    §第一章 IDL 系統介紹
    1.1 認識系統
    1.2 軟體安裝的相關事項
    1.3 系統環境的基本操作
    1.4 系統環境的進階操作

    §第二章 純量的建立與運算
    2.1 純量的建立
    2.2 指令的基本語法和操作
    2.3 純量的基本運算

    §第三章 向量的建立與運算
    3.1 向量的建立
    3.2 向量的操作
    3.3 向量的數學操作

    §第四章 矩陣的建立與運算
    4.1 矩陣的建立
    4.2 矩陣的操作
    4.3 矩陣的數學操作

    §第五章 陣列的建立與運算
    5.1 陣列的建立和型態轉換
    5.2 陣列的下標操作
    5.3 陣列的數學操作
    5.4 陣列資訊的查詢

    §第六章 基本繪圖的實施
    6.1 連結資料點的程序
    6.2 繪製等值線的程序
    6.3 其它與繪圖相關的程序
    6.4 控制繪圖的系統變數

    §第七章 二維影像的繪圖
    7.1 影像的種類和格式
    7.2 影像存取的相關函數
    7.3 影像繪製的程序和函數

    §第八章 三維空間的繪圖
    8.1 立體曲面的繪製
    8.2 三維座標系統的建立
    8.3 三維繪圖的實施

    ◎第二篇 進階語法

    §第九章 特殊資料型態的介紹
    9.1 特殊的資料型態
    9.2 結構的實施
    9.3 指標的實施
    9.4 系統變數的客製化和查詢

    §第十章 字串的處理
    10.1 字串操作的目的和種類
    10.2 字串操作的實施
    10.3 檔案路徑的處理

    §第十一章 裝置環境的設定
    11.1 裝置環境的種類
    11.2 繪圖視窗的操作
    11.3 設置繪圖裝置的方式

    §第十二章 顏色的運用
    12.1 顏色的電腦表示法
    12.2 顏色表單的設置
    12.3 顏色模式的轉換

    §第十三章 字體的選擇
    13.1 文字的電腦表示法
    13.2 字體的種類
    13.3 字形位置的改變

    §第十四章 控制指令的運用
    14.1 運算子的種類
    14.2 控制指令的種類
    14.3 運算子和迴圈的聯合運用

    §第十五章 副程式的實施
    15.1 程式的種類和執行方式
    15.2 主副程式之間資訊的傳遞
    15.3 錯誤訊息的處理

    §第十六章 一般資料的存取
    16.1 一般資料的介紹
    16.2 存取資料的基本執行方式
    16.3 讀取資料的進階執行方式

    §第十七章 特定資料格式的存取
    17.1 特定資料格式的種類
    17.2 存取特定影像格式的實施
    17.3 科學資料格式的相關資訊

    ◎第三篇 數學運算

    §第十八章 微積分的計算
    18.1 差分的計算
    18.2 一維積分的計算
    18.3 二維以上積分的計算

    §第十九章 線性代數的執行
    19.1 矩陣的建立
    19.2 矩陣的運算
    19.3 矩陣的應用

    §第二十章 統計值的估計
    20.1 統計的函數
    20.2 直方圖的製作和應用
    20.3 錯誤桿的製作

    §第二十一章 擬合的實施
    21.1 擬合的功用
    21.2 多項式擬合的實施
    21.3 非線性擬合的實施

    §第二十二章 內插的運作
    22.1 內插的定義和應用
    22.2 一維和二維的內插
    22.3 三維內插的實施

    ◎第四篇 實務應用

    §第二十三章 時間序列資料的繪製
    23.1 時間格式的轉換
    23.2 時間軸的繪製

    §第二十四章 頻譜的分析
    24.1 頻譜分析所需的函數
    24.2 頻譜分析的實施
    24.3 訊號濾波的實施

    §第二十五章 地圖的繪製
    25.1 座標系統的轉換
    25.2 地圖繪製的實施
    25.3 地圖和影像的套疊

    §第二十六章 動畫檔的建立
    26.1 支援的動畫格式
    26.2 GIF動畫檔的製作
    26.3 MPEG動畫檔的製作

    §第二十七章 數位影像的處理
    27.1 像素位置的變換
    27.2 影像處理的進階技術
    27.3 物體形狀的萃取和分析
    27.4 影像與畫框的套疊

    §第二十八章 感興趣區域的分析
    28.1 滑鼠的控制
    28.2 感興趣區域的選擇與發展
    28.3 感興趣區域的標示與統計

    §第二十九章 圖形界面的設計
    29.1 圖形元件的介紹
    29.2 處理界面事件的方式
    29.3 圖形界面程式的範例

    §第三十章 物件繪圖的製作
    30.1 物件繪圖的介紹
    30.2 物件繪圖的實施
    30.3 物件繪圖的範例

    ◎參考書籍

    ◎英文索引

    ◎中英文對照表
  • 前言
    IDL(Interactive Data Language)是一個直譯互動式的電腦語言,在科學和工程上已經有廣泛的應用,尤其在醫學和遙測方面。其指令語法簡單易懂,接近人類的思考方式,其計算和繪圖功能強大,可幫忙解決複雜的工作需求,所以深受科學家和工程師的喜愛。它與學習其它電腦語言一樣,基本的概念和技巧易學,但要廣泛、深入且精通,則需要不斷地研讀和練習。台灣的IDL 使用者不多,主要的原因是市面上的IDL書籍大部分是以英文書寫,而IDL 內建的線上查詢系統也是英文版,在語言的隔閡下,學生的學習效果自然下降,作者在此動機下,才提筆撰寫。因學校工作繁忙,無法全時撰寫,歷經數年,才得以完成。

    本書的作者於 1989 年進入美國阿拉斯加大學費爾班克分校的地球物理研究所攻讀博士學位。在學期間,師事 Dr. Daniel Weimer ,學習太空衛星資料分析和研究地球極區上空電離層的對流電場,Dr. Weimer 是 IDL 的專家,開始帶領作者進入 IDL 的殿堂,作者因此開始感受到IDL程式撰寫的簡單性和方便性,也深深地感受到IDL強大資料處理和繪圖功能的震撼,從此離不開IDL。博士畢業後,在台灣做博士後副研究員,到日本當研究講師,然後前往美國做研究員,最後回到母校國立中央大學太空科學所任教,也都使用IDL進行做太空物理研究。因 IDL 是跨電腦平台,在做工作單位轉換時,不需要學習新的程式語言,節省許多寶貴的時間。回台灣後,開授「高等程式設計」和「太空資料分析與模式化」二門課程,為課程教學需要,開始研讀與 IDL相關的書籍和線上查詢系統,在教學相長的作用下,讓作者更深入了解 IDL 的概念和運作方式。在此感謝 Dr. Weimer 對作者在 IDL 方面的啟發和教導。

    本書是根據作者長期使用 IDL 的經驗和參考 IDL 的線上查詢系統撰寫而成,編排方式盡量簡單易懂,並附上大量的範例,讓讀者快速地從範例中學習IDL指令的語法和關鍵字的運用,以期在最短的時間內達到學習的效果和工作的需求。而且,本書的大部分章節會配置至少一個表格,簡單扼要地敘述每個章節的內容。進階的讀者可以只參閱表格內的重點,回憶曾經學習過的指令和語法。初學者則需要詳細閱讀各章節的內容,然後實際地操作練習,以掌握正確的使用方法。本書章節的編排是參照洪維恩教授編著的《Matlab 7 程式設計》書籍而訂定,本書作者認為洪教授的書籍編排簡單明瞭且有條理,各個章節獨立,讀者可以根據工作需求來參閱特定章節,以節省查詢的時間。

    本書將完整地介紹 IDL 的基本概念和實施方式,對於IDL 的專業物件和視窗界面指令,只是做基本的介紹。本書主要是適用於IDL的初學者,如果想成為 IDL 的專業程式設計師,則需要閱讀其它的專業書籍,甚至包括 C 語言撰寫、資料庫管理以及網頁程式設計等主題。在熟悉 IDL 基本的物件和視窗界面之實施方式後,很容易繼續學習進階的物件和視窗界面之實施方式。本書作者相信, IDL 的基本指令精通後,許多複雜的計算和繪圖工作都可完成,進階的指令也是由基本的指令所寫成,直接使用可以節省很多程式撰寫的時間,但會受限於進階指令執行流程的設計和規格,可能不會完全滿足工作的需求。例如ENVI 軟體是IDL 進階的視窗界面,影像處理的功能強大,但必須熟悉ENVI界面的特定運作方式,才能靈活運用,另外ENVI軟體也需要IDL來擴展其現有的功能。市面上也有許多第三者撰寫的 IDL 進階程式,如果剛好符合工作需求,也可以直接拿來使用,但不要太依賴,以後變成都會上網尋找特定程式,並不是自己寫程式來解決工作上的問題。本書作者不是反對使用進階的程式,只是希望讀者能更熟悉且精通基本的指令,遇到特別的工作需求時,可以自己獨立撰寫程式。

    從IDL 7.0 版本開始,IDL公司推出新繪圖系統(new graphics),提供一些繪圖函數,可以簡單地繪製複雜的圖形,例如顏色桿、條形圖以及箱型圖等,但在本書中不介紹新繪圖系統,因本書作者相信這些複雜的圖形以IDL傳統的繪圖系統也能做到,只不過比較費時。新繪圖系統是建立在物件的繪圖和傳統的指令語法上,等傳統的繪圖方式熟悉後,再從線上查詢系統去學習新繪圖系統,這些新繪圖指令的掌握可以更得心應手。本書介紹的指令和關鍵字至少可以適用至IDL 6.0 版本,更低的版本也可能適用,但有少部分的指令或關鍵字會發生問題,當這種情況發生時,讀者可以使用線上查詢系統去做確認。在 IDL 中,有些指令所配合的關鍵字很多,本書只列出常用的關鍵字,作者不希望以本書去取代線上查詢系統,希望讀者先熟悉常用的關鍵字,然後再從線上查詢系統擴展至其它特殊需求的關鍵字。對於各個指令的完整關鍵字集,讀者可以查閱 IDL 系統的線上查詢系統,注意的是,有些指令的關鍵字會互相衝突,不能同時使用,或者某一個關鍵字一旦使用,就會讓另一個關鍵字失效。

    本書採取不精簡的寫作風格,有些內容會在不同章節中重複介紹,主要是為了各個章節的獨立性和完整性,作者希望讀者在同一章節學到與相同主題相關的IDL觀念和技巧,盡量不要跳到其它章節去學習,以避免分心至其它主題,作者也極力避免重複過多的情況。本書附上的範例眾多,讀者需要反覆練習,直到熟練為止。有些範例針對相同的工作需求,卻以不同方式來實施,一樣都可達到目的,作者希望以這樣的書寫方式,讓讀者不要拘泥於某一種特別的方法,能夠多方嘗試來找出最適當的方法,另外也可傳達「執行方式不只有一種」的概念,讓讀者能夠靈活應用IDL程式語言來幫忙解決工作上的需求。在本書的範例中,如果指令敘述的前面包含提示符號「IDL>」,代表這個指令敘述可以直接輸入,如果沒有包含提示符號,則需要使用文字編輯器把所有的指令敘述鍵入成為一個檔案,然後以指令「.RUN」實施編譯與執行。

    對於初學者,作者建議讀者先閱讀第一章的IDL系統之基本操作、第二至四章的三維以下陣列之建立與運算、第六至七章的二維之基本影像繪圖、第十四至十五章的控制指令之運用和副程式之實施、第十六章的一般資料之存取。當讀者熟悉上述章節的內容後,則變成進階使用者,自己可以依據不同的工作需求來選擇適當的章節閱讀,例如需要做三維繪圖的讀者,可繼續閱讀第五章和第八章的三維陣列之建立和繪圖;需要做數學運算的讀者,可跳至第三篇的微積分、線性代數、統計、擬合以及內插的實施;需要做數據訊號處理的讀者,可研讀第二十三至二十四章的時間序列資料之繪製和頻譜之分析;需要做地圖繪製的讀者,可參照第二十五章的地圖之繪製;需要做影像處理的讀者,可參考第二十七至二十八章的數位影像之處理和感興趣區域之分析。專業程式設計師可從第二十九至三十章獲得圖形界面製作和物件繪圖的基本知識和概念。本書提供中英文對照表和英文索引,方便讀者查閱特定內容的位置。本書範例的程式碼可以從網頁 http://www.ss.ncu.edu.tw/~jhshue/idl_programming.html 下載。

    有很多人的協助才能讓這本書完成,感謝老婆(李碧惠)的全力支持,讓作者沒有後顧之憂;感謝兒子(許柏祥)提供的封面設計靈感,本書才有簡單而有力的封面;感謝地科領域同事(呂凌霄、黃世任和黃健民)的激勵,作者才沒有半途而廢;感謝助理(齊宇柔)和學生們(吳冠廷、徐稚婷、畢可為、黃冠瀚、陳沛羽、蔡承新、謝文傑、謝怡凱)的校稿,才能讓本書得以完美呈現;感謝中大出版中心(李光華、周惠文、張翰璧、徐幸君)的審查、遠流出版公司(簡玉欣)的排版,以及科協股份有限公司(康念滇)的授權,本書才能順利出版。

    本書封面的主插圖是由IDL的物件繪圖製作而成的,包含一個IDL標誌和二個魔術方塊,一個雜亂的魔術方塊代表執行IDL前的工作狀態,另一個整齊的魔術方塊代表執行IDL後的工作狀態,雜亂的魔術方塊掉至IDL標誌後變成整齊的魔術方塊,就像生澀的蘋果掉至牛頓的腦袋上後變成有條理的科學成果。IDL 程式語言的功能強大,可以幫助使用者將雜亂的工作狀態變成整齊的工作狀態,成就豐碩的研發成果。