顯示具有 C 標籤的文章。 顯示所有文章
顯示具有 C 標籤的文章。 顯示所有文章

2011年1月2日 星期日

媲美Matlab的Freeware: Octave (附加MAC安裝教學)

相信很多學工程或是數學計算的人對Matlab都不會感到陌生。只是對於Matlab的取得方式我想不是正版的話就是去找一些神奇的版本...

這邊推薦一套類似Matlab的軟體:Octave。Octave 跟 Matlab很非常像,只是不用錢而已 XD
有興趣的朋友可以去這個網站看看:http://www.gnu.org/software/octave/

Windows 的安裝很簡單(點到底就對了),這邊就不提了。Linux的話其實也很好裝,如果是Ubuntu的話就apt-cache search看看吧~這邊我就用MAC OSX 做一個簡單的安裝教學。

Octave on MAC tutorial:

1. 首先到 http://octave.sourceforge.net/ 去下載For OSX的Octave

2. 打開下載的檔案,然後把Octave drag to Application 就ok了~(沒錯就這麼簡單XD)

3. 為了讓Octave也可以plot graphic,必須安裝gnuplot。但不用重新下載,他就已經在octave原本的dmg裡面了!打開Extras,然後一樣把gunplot drag to Application就ok了!

4. 但這邊的gnuplot有一個bug,會導致你在畫圖的時候出現這個訊息:


dyld: Library not loaded: /usr/local/lib/libaquaterm.1.0.0.dylib
  Referenced from: /usr/local/bin/gnuplot
  Reason: image not found
dyld: Library not loaded: /usr/local/lib/libaquaterm.1.0.0.dylib
  Referenced from: /usr/local/bin/gnuplot
  Reason: image not found
error: you must have gnuplot installed to display graphics; if you have gnuplot installed in a non-standard location, see the 'gnuplot_binary' function

看起來很嚇人對吧?其實是gnuplot link library不對所導致。但沒關係,把它改對就好:
     a. 打開你的terminal(如果有人沒用過的話就用MAC search terminal)
     b. cd /Applications/Gnuplot.app/Contents/Resources/bin (這行指令是換到Gnuplot裡面的bin資料夾)
     c. vim gnuplot (用vim文字處理器去編輯gnuplot)
     d. 到第34行把 DYLD_LIBRARY_PATH="${ROOT}/lib:${DYLD_LIBRARY_PATH}" 改成 DYLD_LIBRARY_PATH="${ROOT}/lib"。存檔後跳出
     e.重開octave再試一次,應該就ok了!


這邊我只有寫在MAC上安裝的流程跟遇到問題的解法,如果有其他人對於MAC安裝上還有問題的在一起互相交流吧!

PS:另外最新版的Gnuplot好像都有用Aquaterm了,所以就不用另外再安裝囉~

2010年11月20日 星期六

C語言: __FILE__, __LINE__

最近在書上看到一些使用__FILE__跟__LINE__的例子,所以就試著寫一段小程式print一下:
//-------------------------------------------------------------------------


#include <stdio.h>
#include <stdlib.h>
int main(){
printf("line: %d \n", __LINE__);
printf("file: %s \n", __FILE__);
printf("function: %s \n", __FUNCTION__);
printf("time: %s \n", __TIME__);
printf("date: %s \n", __DATE__);
printf("TIMESTAMP: %s \n", __TIMESTAMP__);

return 0;
}

//-------------------------------------------------------------------------

Result:
//-------------------------------------------------------------------------

line: 4
file: d:\cr project\rssi\test_print\test_print\test_print.cpp
function: main
time: 17:10:02
date: Nov 19 2010
TIMESTAMP: Fri Nov 19 17:10:01 2010
//-------------------------------------------------------------------------

2010年11月18日 星期四

C語言紀錄程式執行時間的方法

最近一直在比程式的執行速度,測的方法又五花八門@@
這邊就記一個用time.h中的函式來計算所花時間的辦法:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
 
    clock_t start, end;
  
    // Start Record the time
    start = clock();
  
// Your program....

    // Record the end time
    end = clock();

    double diff = end - start; // ms
    printf(" %f  ms" , diff);
    printf(" %f  sec", diff / CLOCKS_PER_SEC );

    return 0;
}