[問題]如何只對特定符號取function_handle

看板MATLAB作者 (夢想家)時間7年前 (2016/08/16 13:40), 7年前編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
我有一個3*3的cell array T 當中的每一項都是由a,b,c,aa,bb,cc的符號組成 (ex: sqrt((a-aa)^2+(b-bb)^2+(c-cc)^2)) 想對T array 中的a,b,c做積分, 所以我用matlabFunction 取function handle T1 = cell(3); for i=1:3 for j=1:3 tf(a,b,c) = T{i,j}; tff = matlabFunction(tf); T1{i,j} = tff; end end A = cell(3); for i = 1:3 for j = 1:3 x = linspace(-1,1,10); y = linspace(-1,1,10); z = linspace(-3,-1,10); [a,b,c] = meshgrid(x,y,z); fun1 = T1{i,j}(a,b,c); A{i,j} = trapz(x,trapz(y,trapz(z,fun1,3),2),1); end end 但是在跑m file的時候,發現上面這一段跑的特別的慢, 同時也發現tff取完function handle =>tff =@(a,b,c,aa,bb,cc) (很長一串方程式) 在想會不會是因為多取aa bb cc而變慢的 可是不知道怎麼讓他只取a b c就好 不知道有人有其他辦法嗎? 謝謝你們 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.26.181 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1471326031.A.70B.html

08/16 19:33, , 1F
或是說向量化的話 這樣的該怎麼執行呢??
08/16 19:33, 1F

08/18 07:02, , 2F
你的迴圈內前四行都是重複執行,放到迴圈外吧
08/18 07:02, 2F

08/18 09:42, , 3F
你有對T1做什麼嗎?看起來應該是空的cell啊?
08/18 09:42, 3F

08/18 12:03, , 4F
啊啊啊 我漏打了 還有 T1{i,j} = tff;
08/18 12:03, 4F
※ 編輯: s455164 (140.112.4.192), 08/18/2016 12:04:31

08/18 12:06, , 5F
因為原本是要對T1這個 cell array裡面把他變成都是T的 fu
08/18 12:06, 5F

08/18 12:06, , 6F
nction handle,還是這樣是多此一舉?
08/18 12:06, 6F
文章代碼(AID): #1NigTFSB (MATLAB)