close

 


201344 星期四


 


連續兩天,夜裡都下了輕薄的雪。


 


下午在地下室小睡。


 


三月以來,興致勃勃的寫電腦程式,又寫出一批小程式,都是utility性質,比較大的,是把NR的一個Runge-Kutta四階的程式改寫成標準C++語法,然後又寫成可以被Matlab呼叫的Mex 程式。


 


這當中,麻煩處多在於引數傳遞。


最後一個始終不成的,是直接產生Mat file存檔----一切都順利,但是打開來看,存的檔案裡都是零。


 


產生Mat filecode是由範例上抄來,卻不成。


 


晚上再試,把其中一行複製數據的程式由


memcpy((void*)(mxGetPr(xx_mat)),(void*)xx,sizeof(xx));


改成


memcpy((void*)(mxGetPr(xx_mat)),(void*)xx,(NSTEP+1)*sizeof(double));


竟然成了!


Visual C++的問題常常在於,它不接受正確的C++ code,它有自己的一套。


我卻無法知道,它自己的那一套是什麼?


 


就像,用fwrite檔,第一個變數的數據一定被破壞,第二個開始就是好的。


 


不知道原因何在?只好用一個虛擬變數打頭陣,讓它破壞。


 


還有,用fwrite存的檔,若自己讀回來,一切無誤。但若用另外一個獨立的程式去讀(用fread,檔案內也全都是零。


不知何故?


 


程式跑通後,Matlab呼叫C++,一指按鍵後,不但演算完畢,還把結果畫成圖。


當那圖在電腦畫面出現時,感覺非常快樂!


 


三月,就作這些學習。


 



 
arrow
arrow
    全站熱搜

    海歌 發表在 痞客邦 留言(0) 人氣()