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

作者: s455164 (夢想家)   2016-08-16 13:40:28
我有一個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就好
不知道有人有其他辦法嗎? 謝謝你們
作者: s455164 (夢想家)   2016-08-16 19:33:00
或是說向量化的話 這樣的該怎麼執行呢??
作者: name0625 (lawpy)   2016-08-18 07:02:00
你的迴圈內前四行都是重複執行,放到迴圈外吧你有對T1做什麼嗎?看起來應該是空的cell啊?
作者: s455164 (夢想家)   2016-08-18 12:03:00
啊啊啊 我漏打了 還有 T1{i,j} = tff;因為原本是要對T1這個 cell array裡面把他變成都是T的 function handle,還是這樣是多此一舉?

Links booklink

Contact Us: admin [ a t ] ucptt.com