MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Kristian Jørgensen on 3 May 2013

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

*No products are associated with this question.*

Answer by Iman Ansari on 3 May 2013

Accepted answer

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])

Answer by the cyclist on 3 May 2013

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)

## 0 Comments