how to evaluate a function in string with parfor?
조회 수: 5 (최근 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!