how to evaluate a function in string with parfor?
7 次查看(过去 30 天)
显示 更早的评论
Hi everybody, I have a problem evaluating the value of a function in string with parfor. Before I started using parfor, I used "eval", which worked quite well. I know "eval" does not work well with parfor and the one recommended the most online is "feval". However, I do not know how to use it. More specifically, i am doing genetic programming with the following code randomly generating a function for each individual.
parfor v = 1:8;
popu{v} = gpols_init(popusize,maxtreedepth,symbols);
tree{v} = popu{v}.chrom{jf}.tree;
aa{1,jf,v} = tree_stringrc(tree{v},1,symbols);
end
The output in "aa" looks like the following.
val(:,:,1) =
'XX(iv,1)' '(XX(iv,9))/(XX(iv…' '(((XX(iv,7))*exp(…' '(XX(iv,1))*sqrt(X…' '((XX(iv,2))*log((…'
what I need to do is to evaluate the value of each expression, which I do not know how to do. I will appreciate if someone could help me with it. Thanks. Best, J.
3 个评论
采纳的回答
OCDER
2017-11-14
For str2func, you also need to include the "@(var1, var2, var3, ...)" string. This is used to tell Matlab what part of the string are variables, while the rest of the string are treated as function names and math operators.
XX = rand(10); %What is XX? I'm assuming it's a matrix
iv = 10; %Assuming this is just an index of XX
aa{1,1,1} = 'XX(iv,1) * sin(XX(iv,1))'; %Example string of a function. XX and iv are variables.
FuncHandle = str2func(['@(XX, iv)' aa{1,1,1}]);%Define "XX" and "iv" as variable names in the string using @(XX, iv).
Output = FuncHandle(XX, iv); %Evaluate the string as function.
11 个评论
OCDER
2017-11-17
This could be caused if starting matlab with the -nojvm option. Here's a similar Q&A thread for this error. https://www.mathworks.com/matlabcentral/answers/230285-parpool-r2014a-fails-on-linux
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!