I think the way that you can do this with minimal changes to your overall approach would be as follows. If you're willing to change your fundamental approach, other (i.e., better) solutions may be available.
Anyway, in what follows I'm going to assume that the mask parameter and function argument obj_string can take on values that are strings that are the names of the Matlab variables in the base workspace. These variable names must be known a priori. In other words, I'm going to assume that the base workspace contains variables named objvar1, objvar2, objvar3, and that obj_string can take on values "objvar1", "objvar2", and "objvar3". Then the function looks like this:
function out = fcn_name(in,obj_string)
persistent objvar1 objvar2 objvar3
objvar1 = evalin('base','objvar1');
objvar2 = evalin('base','objvar2');
objvar3 = evalin('base','objvar3');
Note that the persistent variables objvar1, etc. will remain in the function workspace after the simulation completes, even if you call it from the command line. So you might want to clear the function (and its persistent variables) after the sim completes or before the sim starts, either by hand or via a simulation callback function, so that every time the sim runs it picks up the current values of the base workspace objects.
Caveat: I didn't actually try this, but I don't see a reason it won't work.
Again, there are probably better ways to do this. For example, if all the objects can be stored in an array, then why not do that and access the array with an index that's passed into fcn_name (as opposed to passing in obj_string). That way you'd only have a single persistent variable to deal with in the function. Or you can store all the objects as fields in a single structure with field names being "objvar1" etc. and then access the structure using dynamic field names
which again has the advantage of only having to make mystruct persistent. There are probably other options as well.