Re: [問題] function問題!已回收

看板MATLAB作者 (juzn)時間15年前 (2010/05/14 23:52), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
function 可以把他當成副程式 也就是主程式中可以獨立切割出來運算的部分 通常能夠使主要程式更精簡 也能夠使需要相同運算的程式 不必再主程式中一再重複出現 舉例: 把下面的程式存成aa.m function [X Y]=aa(a,b,c,n) X=2*a+b; Y=c*randn(1,n)+X; 然後在command window 或是主程式中 我們就能直接使用aa這個函數來運算(必須存在相同資料夾 或指定路徑) 例如在command window輸入下面程式 [K G]=aa(2,3,4,5) 運算後 得到K=2*2+3 Y=4*randn(1,5)+K 也就是說 function [X Y]= aa(a,b,c,n) ^^^^^ ﹋﹋﹋﹋﹋﹋這是函數名稱+應該給的輸入參數 這是此函數的輸出 ※ 引述《afa0525 (阿發)》之銘言: : 這是我的初始設定.m檔案內容 檔名initial.m : clear; : clc; : rand('seed',25); : loop=40; : popsize=20; : Bit=30; : Pm=0.03; : Pc=0.3; : Pm_elit=0.2; 這邊並沒有使用new這個函數 你這邊可以加一行 pop=new(loop,popsize,Bit,Pm,Pc,Pm_elit) 然後執行看看 : 另外一個檔案 一開始內容 檔名new.m : function[pop]=new(loop,popsize,Bit,Pm,Pc,Pm_elit) 你設定的函數輸入項非常多 但實際運算時卻只用到popsize跟Bit 其他輸入變成多餘的 : pop=round(rand(popsize,Bit)) : 我想做一下測試!! 但不知道 為什麼不能動 悶 因為你直接run new.m這個檔 這樣是不對的 new是你編寫的function 是要拿去主程式中使用的 : 前幾天有上來問function的問題 也有去看投影片 : 但還是不太會用 !! 可以請問 這個要如何改它才會動作 ?? 謝謝 : 錯誤??? Input argument 'popsize' is undefined. 你必須先理解寫function的目的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.0.181

05/15 00:04, , 1F
thanks...確實加入這行就可執行了! 我在研究看看
05/15 00:04, 1F

05/15 00:04, , 2F
感謝您講解...
05/15 00:04, 2F
※ 編輯: juzn 來自: 134.208.0.181 (05/15 00:07)

05/15 00:07, , 3F
完整的把GA寫出來後,會累積不少debug經驗值(應該是GA吧@@)
05/15 00:07, 3F
文章代碼(AID): #1BxN7FTr (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1BxN7FTr (MATLAB)