Call functions with names generated from strings

조회 수: 35 (최근 30일)
Kristian Jørgensen
Kristian Jørgensen 2013년 5월 3일
I am writing a piece of code for a 2 phase oil and water reservoir simulation. Assume I have a structure called fluid, in which there are several functions for parameteres for each phase, appropriately named:
fluid.muO @(p) %(oil viscosity as a function of pressure)
fluid.muW @(p) %(water viscosity as a function of pressure)
If I want to make a general function in which the phase is an input parameter, how do I use this string to call the function above? I tried:
phase = 'O'
eval = strcat('fluid.mu',phase)
Where to go from here I do not know, but I wish to use the variable phase to call fluid.muO and fluid.muW. Is it even possible?
Cheers

채택된 답변

Iman Ansari
Iman Ansari 2013년 5월 3일
Hi.
fluid.muO=@(p) p.^2+1;
fluid.muW=@(p) cos(p)+2*sin(p);
phase = 'O';
name = strcat('fluid.mu',phase);%['fluid.mu',phase]
f=eval(name);
f([0 1 3])

추가 답변 (1개)

the cyclist
the cyclist 2013년 5월 3일
Here is one way:
fluid.muO = @(p) p;
fluid.muW = @(p) 2.*p;
phase = 'O';
eval(['F = @(p) fluid.mu',phase,'(p)'])
p = 1:10;
F(p)

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by