作者s455164 (梦想家)
看板MATLAB
标题[问题]如何只对特定符号取function_handle
时间Tue Aug 16 13:40:28 2016
我有一个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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1471326031.A.70B.html
1F:→ s455164: 或是说向量化的话 这样的该怎麽执行呢?? 08/16 19:33
2F:→ name0625: 你的回圈内前四行都是重复执行,放到回圈外吧 08/18 07:02
3F:→ name0625: 你有对T1做什麽吗?看起来应该是空的cell啊? 08/18 09:42
4F:→ s455164: 啊啊啊 我漏打了 还有 T1{i,j} = tff; 08/18 12:03
※ 编辑: s455164 (140.112.4.192), 08/18/2016 12:04:31
5F:→ s455164: 因为原本是要对T1这个 cell array里面把他变成都是T的 fu 08/18 12:06
6F:→ s455164: nction handle,还是这样是多此一举? 08/18 12:06