2013年9月8日 星期日

Matlab入門課程(1)解決最簡單的問題

前幾天,碰到一位同學來詢問我有關簡單的資料處理問題,討論完演算法之後,問他打算用什麼語言來寫,他很靦腆的說C++。我說用Matlab就可以了,不必用到C++吧?

大家或許覺得Matlab只適合在校園使用,所以,在學生時代就會勉勵自己要用未來可以找到工作的程式語言來寫,有關這一點,我並不反對。

但是,如果一個簡單的問題,要花掉好多時間去處理,連畢業都有困難,還擔心畢業以後的事情嗎?我建議先把資料處理的基本功夫學好,再談用C++開發大型的系統。

這一篇文章是延續 FORTRAN入門課程(1)解決最簡單的問題 同樣的內容,只是用Matlab來寫

fid1=fopen('data.xyz','r');
fid2=fopen('new_data.xyz','w');
        while 1
            tline = fgetl(fid1);
            if ~ischar(tline), break, end
            A=sscanf(tline,'%f, %f,%f');
            x=A(1); y=A(2); z=A(3);
            fprintf(fid2,'%f,%f,%f\r\n',x,y,-z);
        end
fclose(fid1);
fclose(fid2);

這個程式使用下列幾個Matlab基本的觀念

  • 檔案開啟(fopen)與關閉(fclose)
  • 檔案讀取(fgetl)與寫入(fprintf)
  • 字串處理(sscanf)
  • 迴圈(while loop)
  • 決策(if)
這個程式的基本精神是用fgetl函數將整列資料當成字串,讀入tline字串變數中
再用sscanf函數,將x,y,z三個變數讀入A矩陣中,在輸出的時候,才改變z的符號


沒有留言:

張貼留言