MATLAB 板


LINE

因為有版友私下寫信給我.對於合併程式m-file的方法 做個解說. 私以為將自己的心得.作為拋磚引玉. 首先.為什麼小弟總是喜歡用副程式來撰寫程式呢? 小弟是讀化工的.研讀部分屬於化工中很特別的一種 程序控制與模擬.而我負責的部份為反應性蒸餾系統. 當我進行蒸餾塔模擬的時候.會有很恐怖的情形. 單板:微分方程式的數目與成分數同外.還得進行溫度對氣體蒸氣壓的影響 若果成分數達到4個.板數達到35個板.那麼方程式數目為 35*4 = 140 條微分方程式 = 變數的數目 三條微方+一條總組成 = DAE (微分代數方程式) 用 ode15s 解題器來解 (若果兩者不相同.那麼解出來就不會是唯一解.在此不討論多重穩態) 還不包含能量平衡方程式(有化學反應還得加入反應熱) 這樣大的程式是很恐怖的.有人說合併挺麻煩.太多看不清. 不過要是一個式子一個式子修改.反而是合併較為容易 而且還得計算熱力學模組(NRTL,WILSON,UNIQUAC,UNIFAC等等). 又得增加一個疊代迴路...那在修改時就很恐怖了.... 因為要把數據拿出來畫圖.常用到 " global " (全域變數宣告) 變的很不好改變程式碼 那麼我就想.將程式合併出來不就很好嗎?不過一開始都弄不起來 (那時候很菜.看到 MATHWORK 的檔案交換中心的人寫的東西.都覺得他們是怪物 不知道是怎麼併的.還有人寫成GUI.真是神 @@a.不過現在還是沒改變對他們的 崇拜就是了) 後來成功了.有兩點挺重要的.我就直接進入主題吧 1.使用 % ---------------------- 將副程式分出來 2.使用函數握把 @ .才可以順利求解 範例:function pptex2 握把--> [T,X]=ode45(@test2,[0 10],[0;0]) D=5.2; m=61; a0=346.05; L=10.6; Po2=8; Po1=1; N=(1-0.2.*X(:,2)./a0).^(7) M=(L-X(:,1)./L).^(-1.4) xlswrite('T',T,'T') xlswrite('X',X,'X') xlswrite('M',M,'M') xlswrite('N',N,'N') 分隔--> % ------------------------------------------------------------------ function dx=test2(t,x) D=5.2; m=61; a0=346.05; L=10.6; Po2=8; Po1=1; dx=zeros(2,1); dx(1)=x(2); N=(1-0.2*x(2)/a0)^7; M=(L-x(1)/L)^-1.4; dx(2)=(pi*D^2/(4*m)*0.1)*((Po2*N)-(Po1*M)); 一般利用MATLAB內建的函數使用時.大部分我們在使用的方式是如此的 (這邊指使用數值解方面的解題器.非解析解的) [OUTPUT,...]=FUNCTIONNAME( ' FILENAME ' ,CONDITION,FACTOR1,...) ^^^ ^^^ 在MATLAB中有一個使用指令與上面標記起來的用法類似.但是卻於使用副程式時 為必須條件.我個人使用時是發現.不使用函數握把時.無法使用副程式 (剛開始覺得自己很菜的原因竟然是不會打小老鼠 囧>) 所以請要使用的同好.使用函數握把吧.並且要將程式與程式之間隔開就是了. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.160.163
1F:推 zhewei:我的方法是一個副程式一個m-file用久了,覺得管理很方便 09/16 22:48
2F:→ zhewei:像未來如果這個function會被其他支程式call的話! 09/16 22:48
3F:→ zhewei:我就會把他放在同一個資料夾內!!(主要是我會到處demo) 09/16 22:49
4F:→ zhewei:這樣也不用考慮path的問題!! 09/16 22:49
5F:推 leslielion:順便問1F一個問題 09/16 23:18
6F:→ leslielion:我也是把副程式寫成一個m檔..然後在主程式call出來 09/16 23:18
7F:→ leslielion:但我的副程式m檔是會自動建立.. 09/16 23:19
8F:→ leslielion:但每次call的時候MATLAB會說找不到m檔 09/16 23:20
9F:→ leslielion:請問你有遇過這種情況嗎? 09/16 23:20
10F:→ leslielion:7108篇有我之前問的問題 09/16 23:21
11F:推 zhewei:會不會是你的path沒有設對? 09/16 23:54
12F:推 leslielion:path沒問題..執行第一次會出現找不到的錯誤訊息 09/16 23:56
13F:→ leslielion:執行第二次就可以成功...很怪...=.= 09/16 23:57
14F:推 zhewei:我也覺得很怪!看看版上的先進們!!知不知道原因為何? 09/18 23:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP