Octave
http://alternativeto.net/software/octave/
http://www.gnu.org/software/octave/
- 數值計算與繪圖,其語法與 Matlab 幾乎相同
另外亦可將程式寫成指令稿(script)對資料進行批次處理。
(...繼續閱讀.../...CONTINUE...)
/ 水瓶尤加利的 DIY 小天地 / 雜誌模式 / English Posts
----
生活 (居家修繕 DIY, 陽台菜園, 攝影遊記...) / ----
科技 (軟體, 硬體, 程式設計, 電腦與我...) /
http://alternativeto.net/software/octave/
http://www.gnu.org/software/octave/
你應該也有這種經驗, 想找某方面的軟體, 尋尋覓覓尋尋覓覓的結果, 卻發現怎麼就只有 Linux 版本 ..., 這時候你怎麼辦? 會想動手把它『移植』到 Windows 嗎?
例如: 有機會和 Evernote 或 OneNote 互補的 BasKet Note Pads, 讓我差點想把 andLinux 或 coLinux 架起來....。而最近找到『畫時序圖』的免費工具 DrawTiming, 就讓我安裝了第一次使用的 Cygwin 來編譯執行檔, 最後又換成 MSYS + MinGW ...
.
Cygwin 與 MinGW 有什麼不同? 我的看法是: 比較複雜, 或是使用到較多外部函式庫的程式, 適合使用 Cygwin; 而比較單純, 沒有使用到外部函式庫, 而且又希望很容易分享出去的程式, 則適合使用 MinGW
其他說明可以參考 :
Cygwin ... 透過 ... Cygwin1.dll ... 建立一個系統呼叫轉換層,將原先 unix 世界裡的 system call 呼叫,... 映對到微軟視窗作業系統的系統呼叫,... 在 Windows 底下模擬出一個 unix 平台來
MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,
MinGW 是取 Minimalist GNU for Windows 計劃之意,其目標為提供一個可在 Win32 平台上開發 Win32 native code 的 GNU GCC tools ,而非提供 Unix 程式移植到 Win32 平台之用,此即為其 Minimalist 之意。... 在 MinGW 中,有提供一套最小化的 unix shell 擬似執行環境,稱為 MSYS (Minimal SYStem)
... 如果是打算將原本在unix 環境下的程式移植到win32 的使用者,也不建議用這套工具, Cygwin 更合適。
簡單的說,cygwin在windows上提供了一個像linux (Linux-like)的環境,可以讓使用者在windows上執行linux的程式。
嚴格地說, cygwin 是模擬了 GNU 的環境, 而不是 linux 的環境,藉著 cygwin 的函式庫(library), 在 Win32 API 環境上提供了像 linux 般的API 環境. 利用 Cygwin, 你可以:
- 將 linux 上的程式移植到 Windows , 而不必做重大的修改,只需將原始碼拿來作 configure 與 make 就好了。
- 使用常用的 linux 工具程式,如grep, sed, awk等。
- 撰寫 Win32 native console 或是 GUI 應用程式。
.
- 連至 www.cygwin.com 下載 setup.exe
- 執行 setup.exe , 選取Download from Internet
- 選取距離自己最近的下載點
- 選取所需套件 // 建議全選devel, lib等分類的所有套件
- 執行 setup.exe , 選取Install from Local directory安裝套件 //最好選取 All user
- 選取所有套件
- 執行桌面上的 Cygwin 的 icon 圖示即可執行此一 Cygwin 環境。// 視窗大小可由icon 圖示右點按 選取調整字型 及佈置
step by step 可參考 http://linux.tnc.edu.tw/techdoc/shell/x52.html
.
例如, DrawTiming 官網的 安裝說明 提到已經在 FreeBSD, Linux, 和 Cygwin 底下測試過, 另外在 編譯成 Cygwin 版本的注意事項 又說到需要這些函式庫: ImageMagick, libMagick-devel, libbz2-devel, gcc-g++, make, xorg-x11-devel, ghostscript-base, 所以我裝 Cygwin 的步驟就是 :
setup.ini 的內容
@ libMagick-devel
sdesc: "Image manipulation software suite (development)"
ldesc: "ImageMagick is a software suite to create, edit, and compose bitmap ..."
category: Graphics
requires: cygwin libbz2-devel libfontconfig-devel libfpx-devel libfreetype2-devel libjasper-devel libjbig-devel libjpeg-devel liblcms-devel libpng12-devel libtiff-devel libwmf-devel libxml2-devel libX11-devel libXext-devel zlib...
@ xorg-x11-devel
sdesc: "Obsolete package"
ldesc: "Obsolete package"
category: _obsolete
requires: libX11-devel xorg-x11-base
可以得知 libMagick-devel 在 Graphics 這個類別節點底下, 而且它同時需要 cygwin libbz2-devel, 這些相依的函式庫 (dependency), 會在點選 libMagick-devel 時被自動納入, 而 xorg-x11-devel 則是不存在 (_obsolete)
下面是我在 Cygwin 內定的部份之外, 配合 DrawTiming 再勾選的函式庫 :
| 類別節點 | 函式庫 |
| Devel | gcc-core gcc-g++ make |
| Graphics | ImageMagick ghostscript ghostscript-fonts-others ghostscript-fonts-std libMagick-devel |
| Libs | libbz2-devel |
| _obsolete (不存在) | ghostscript-base xorg-x11-devel |
.
假設 drawtiming-0.7.tar.gz 存放在 e:
如果只需要在一台機上器上執行 DrawTiming, 到這邊就算完成了。
總計 Cygwin 版完整的 DrawTiming, 過程中除了120KB 的 DrawTiming 原始程式碼之外, 還要下載 Cygwin 將近 80MB 的安裝檔 (含 gcc, ImageMagick, ghostscript ... 等), 安裝之後則變成大約 300MB 的 Cygwin 的執行環境 ....。不過, 這一番辛苦之後可以正確輸出 GIF, JPG, PS, EPS。
.
經過一番嘗試, 我發現可以抽取出一些 DLL, 變成『免安裝 Cygwin』在 Windows 命令列執行的 DrawTiming。而這個『免安裝版』因為字型相依性還沒全部解決, 所以只能輸出 PS, EPS 格式。雖然功能上打了折扣, 但是只需要複製大約 10MB 的檔案, 就 可以在另一台『沒有安裝 Cygwin 的電腦』執行 DrawTiming。
把下面這些檔案, 連同在 Cygwin 底下編譯的 drawtiming.exe 複製到同一個目錄,
其中, type-ghostscript.xml 裡面的路徑設定 /usr/share/ghostscript/fonts/ 要去掉
例如 :
... metrics="/usr/share/ghostscript/fonts/a010013l.afm" glyphs="/usr/share/ghostscript/fonts/a010013l.pfb"
改成 :
... metrics="a010013l.afm" glyphs="a010013l.pfb"
| cygbz2-1.dll | 原本在 c:\cygwin\bin 懶得篩選, 也可以 *.dll 全部複製 |
| n019*.* | 原本在 c:\cygwin\usr\share\ghostscript\fonts |
| type.xml | 原本在 c:\cygwin\lib\ImageMagick-6.4.0\config |
.
DrawTiming 是『畫時序圖』的免費工具, 可以從命令列產生時序圖, 不僅描述時序的文字檔語法非常直覺, 而且還能畫出時序的相依性。
.
原本 DrawTiming 要自己在 Linux 或 Cygwin 底下編譯成執行檔, 而且要搭配 Magick++ API 等 ..., 不過, 我改造出一版 只能產生 PS, EPS 格式的『免安裝版』, 請從 這裡下載 zip 檔。
之後就可以 在 Windows 命令列執行 DrawTiming ...
.
| sample.eps |
guenter |
| statement1 |
| memory |
.
DrawTiming『描述時序的文字檔語法』非常直覺, 並且有『命令列參數』可以調整字體大小, 圖檔格式 ... 等, 這些在 官網上有詳細的說明, 就不再贅述。
如果急著上手, 也可以從 示範的輸出結果『看圖說故事』, 直接從圖形上找到想要的圖樣, 再回頭研究 *.txt 文字檔案的相關內容。
以下補充其他的注意事項 :
| token = "\"=\"".
|
| token = "\"=\"". |
.
目前有下面的小問題, 不清楚是否有相關語法可以解決
.
在搜尋『畫時序圖』軟體的過程, 我用 Timing Diagram 當關鍵字, 發現另外兩個名詞
軟體系統發展人員用以建造模型 ... 使得工作團隊能夠:將系統具象化、系統結構化、行為規格化、建構系統、以及記錄發展系統過程中之各項決策。...
UML所涵蓋的內容是表示法而非程序,UML是與程序無關的,也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。 (淺談UML 資策會)
2005年, UML 2.0 增加 時間圖 (UML Timing Diagram) 的定義, 不過可惜的是找到幾種免費的 UML 軟體, StarUML, BOUML, umbrello, 看來都只有『循序圖』(Sequence diagram), 而沒有『時序圖』(Timing Diagram)
.
http://xml.coverpages.org/tdml.html 有 TDML 的說明, 也列出一些軟體, 不過我並沒有找到合用的軟體來畫『時序圖』。
付費版的可以參考 Timing designer。
有一款免費線上使用的 TimingTool Lite, 看來需要 Java 1.5, 而且點下 "Demo" 之後會提示要註冊一個帳號, 所以我還沒使用過。
AndyTiming 是我同事找到的另一款免費的時序圖工具, 它比 DrawTiming 更簡單, 請見下面的說明
.
| AndyTiming (下載點) | DrawTiming |
| 在下半視窗直接輸入一串字元來代表波形 | 命令列工具 |
| 用字元『畫出』時序圖 | 從時序描述檔案轉換成圖形 (邏輯上較為嚴謹) |
| 無法表示『時序的相依性』, 也不能標示『時間間隔』 | 可以標示『時序的相依性』與『時間間隔』 |
.
因為 DrawTiming 的關係, 我安裝了第一次使用的 Cygwin 來編譯執行檔, ....
後來, 編譯環境換成 MSYS + MinGW 之後, 就可以擺脫 cygwin1.dll, 而直接在 Windows 底下執行 DrawTiming 了。
MSYS + MinGW 真的是苗條許多, 下載 20MB, 安裝後 70MB, 相形之下, Cygwin 就顯得龐大 (下載 50~80MB, 安裝後 250~300MB),
.
MinGW 與 Cygwin 的不同處 (E-Office學園, 2006-02-05)
MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,
UNIX 世界Open source 的玩法,大約都是 ... 取得 Source code,然後 configure --> build --> install 三部曲
configure 會先蒐集你平台上各個工具元件實際安裝路徑,根據它們來調整軟體 Project檔(通常它是一個Makefile),之後才執行 make 去 Build 出軟體,透過 Install 腳本,最後再把作好的軟體 install (安裝)到適當的資料夾來使用。這 MSYS 就可以讓 MinGW 這編譯工具也具備第一步的 configure 功能。
簡單的說 :
| 下載原始碼 | 例如 : DrawTiming |
| 解開原始碼 | tar -xzf drawtiming-0.x.tar.gz |
| 執行 configure 自動調整編譯環境 | cd drawtiming-0.x |
| 依照需求 make | make (編譯執行檔) make install (編譯並自動安裝到) make check (編譯並測試執行結果) |
而 MSYS + MinGW 就是讓我們能在 Windows 底下重新編譯 GNU 程式的 Minimum System
.
GCC在windows的開發環境叫MinGW
MinGW代表Minimalist GNU for Windows
官方網站在 http://www.mingw.org/
sourceforge的專案網站 http://sourceforge.net/projects/mingw/...
安裝過程中會詢問你還需要安裝哪些套件
通常會再選make跟g++...
其餘詳見 installation of GCC on windows (koukai的Blog, 2007-05-17)
koukai 有提到要設環境變數, 不過我覺得 要搭配 MSYS 使用, 其實可以不必設定環境變數
可以先下載 MinGW-5.1.x.exe 再透過它來下載其餘的檔案, 我選了make跟g++之後, 總共下載了下面這些檔案:
mingwrt-3.15.1-mingw32.tar.gz
w32api-3.12-mingw32-dev.tar.gz
binutils-2.17.50-20060824-1.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
mingw32-make-3.81-20080326-2.tar.gz
mingwrt-3.15.1-mingw32.tar.gz
安裝過程 在 koukai 的 installation of GCC on windows 有清楚的說明
.
MSYS是一套類似cygwin在windows建構出unix-like的shell
並擁有一些常見的GNU utilities可以使用,也可以利用mingw的一些程式
... 首先安裝好mingw,可參閱http://koukaipan.pixnet.net/blog/post/4716500
... 再來安裝MSYS
... 問你要不要進行post install,鍵入y,
問你有沒有安裝mingw,當然有,鍵入y,
位置填入你mingw安裝位置,記住,這邊路徑目錄的斜線是正斜線
...
其餘詳見 MSYS環境建置 (koukai的Blog, 2008-10-10)
安裝完成之後, 點選桌面的 MSYS 圖示, 進入類似 Linux 的命令列, 操作 tar, configure, make ... 等指令, 就大功告成了。
不過, 這邊有個小問題, 是無法確定磁碟機如何對應, 像 cygwin 底下的 e: 會對應成 /cygdrive/e/, c: 會對應成 /cygdrive/c/ (參見 安裝Cygwin, Forster Wu, 2001-03-09), 但不清楚 MSYS 的作法 ...
所以, 我把下載的檔案用 7-Zip 或 IZArc 直接解壓縮到 x:\msys\1.0\home 底下, 也就是 MSYS 的 /home 底下
.
原本 DrawTiming 提供的是 120KB 的原始程式碼, 在 Linux 或 Cygwin 底下編譯成執行檔, 再配合 Magick++ API 來產生圖型檔 。
除了第一個純 Linux 的環境我沒試過之外, 越往下的編譯執行環境就是越輕巧的版本
.
不只能看 AutoCAD 圖檔, Brava! DWG Viewer 提供的『量測功能』更是好用。而且安裝程式只有 16M, 比原先用的 Volo View Express 2 或 3 來得更小。Brava! DWG Viewer (Informative Graphics) 的使用非常直覺 ---- 滑鼠左鍵平移圖形, 滾輪縮放圖形 ..., 相信你也能很快上手。
原本, 一直都用 Volo View Express 2.01 (24M) 來看 AutoCAD 的 DWG, DXF 圖檔, 但是沒有量測功能, 後來改用 Volo View Express 3 (93M), 但量測的功能還是很陽春, 真不知道為何需要那麼大的安裝檔。還好現在發現了 Brava! DWG Viewer
.
| |
![]() | 再選擇 Measure - Calibrate |
| 決定是否勾選 Snap |
![]() | 量測已知的長度『線段的第一點』 按下滑鼠左鍵先不要放開, 此時會出現局部放大的視窗, 將游標移到準確的位置, 再放開滑鼠左鍵 |
| 量測已知的長度『線段的第二點』 同上, 按下滑鼠左鍵先不要放開, 此時會出現局部放大的視窗, 將游標移到準確的位置, 再放開滑鼠左鍵 |
| 輸入已知的長度, 即完成校正 |
.
不但可以量測長度, 還可以量測面積
用『按下左按, 對準再放開』的方式, 依序點選每一個頂點, 最後按『右鍵』即完成
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() |
得到寬度, 周長, 面積 ...
![]()
.
.