How to load variable from function workspace to Base workspace ?

Suppose I have a file called file123.m and inside this file I am calling one function load_func().
Now let's assume there is one variable call 'A' which is a bus object inside the function load_func(). so, Now i want to load the variable A into my base workspace of file file123.m
So, how can I do this ?
If anyone has any idea or the ways to do it, please help me.
Thank you so much.

7 Comments

return the value as output of function.
Thank you for your answer but I don't want it this way...
"If anyone has any idea or the ways to do it, please help me."
The MATLAB documentation explains how you can pass data between workspaces:
The simple, efficient, easy, neatest, robust, reliable, recommended approach is to use an output argument.
What if I have one bus object which is being made iteratively. For example in the function suppose I have one for loop and inside that for loop I am making one Bus Object.
for i=1
inside the loop, bus object Bus_Object1 = .... is created
for i=2
isnide the loop, bus object Bus_Object2 =... is created.
So, if I want to use this output argument, then If my for loop is running for lets say 50 iterations, so 50 Bus Objects will be created and Its not appropriate to give 50 bus objects as an Output
Can you dynamically create variables with numbered names like Bus_Object1, Bus_Object2, Bus_Object3, etc.? Yes.
Should you do this? The general consensus is no. That Answers post explains why this is generally discouraged and offers several alternative approaches.
"What if I have one bus object which is being made iteratively."
Then you use indexing, just like MATLAB is designed for.
"If my for loop is running for lets say 50 iterations, so 50 Bus Objects will be created and Its not appropriate to give 50 bus objects as an Output"
Why not? I store objects from loops all the time, most MATLAB users do. You can very simply use indexing to store objects in a cell array or probably an object array. How to use loops and indexing is the simple and efficient approach to this task. The basics of how to use loops and indexing is explained in the introductory tutorials:
Rather than your complex and inefficient approach, you should just use basic indexing. Indexing is a MATLAB superpower.
My question here is that
suppose I have my Main.m script which has a function Fun1 and the function Fun1 has another function inside it which is Fun2
So, now I have one bus object created inside this Fun2 then I want to transfer that function into the Main.m's script Workspace which is my Base Workspace.
So, can you tell me how can i make this ?
So, in general way I want to find a way that I can store variables from any workspaces to my Base Workspace without using assign, assignin, eval and evalin functions.

Sign in to comment.

Answers (1)

I used to save some information like in this example
function SaveJob(~, filename, importJob)
save("path\dir\" + filename, "importJob");
end
loaded it like so
load("path\dir\filename");
and accessed the data like that:
importJob(1,3)
I called it like that
vars = [RadiusMin, RadiusMax, Crop, Sensitivity, Method, Rotation, Active, FontSize, ImagePath, TargetRadius, TargetTolerance, TCP];
SaveJob(app, jobname + "\\" + tmp_taskname, vars);
it kinda depends on your setup but maybe this helps a little bit

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!