How can I send data from one function to another?

6 Ansichten (letzte 30 Tage)
Michael cornman
Michael cornman am 5 Jul. 2016
Kommentiert: James Tursa am 7 Jul. 2016
I have a function that is reading values from a .txt file using fscanf, and storing those values in an array.
Now I have another function that needs to use that array, but I am getting an error that says the variable does not exist.
Research tells me that after a function is done running, the variable leaves the workspace.
How can I pass this data into the 2nd function?
Thank you!

Akzeptierte Antwort

James Tursa
James Tursa am 6 Jul. 2016
You can pass the variable out from the first function and pass it in to the other function. E.g.
% File fun1.m
function result = fun1
result = rand(3);
end
% File fun2.m
function fun2(x)
disp(x)
end
And then at the command line:
>> x = fun1
x =
0.7577 0.6555 0.0318
0.7431 0.1712 0.2769
0.3922 0.7060 0.0462
>> fun2(x)
0.7577 0.6555 0.0318
0.7431 0.1712 0.2769
0.3922 0.7060 0.0462
Another way is to use the 'userdata' property of the 0 process. E.g.,
% File fun3.m
function fun3
result = rand(3);
set(0,'userdata',result);
disp(result);
end
% File fun4.m
function fun4
x = get(0,'userdata');
disp(x)
end
Then at the command line:
>> fun3
0.0971 0.3171 0.4387
0.8235 0.9502 0.3816
0.6948 0.0344 0.7655
>> fun4
0.0971 0.3171 0.4387
0.8235 0.9502 0.3816
0.6948 0.0344 0.7655
  3 Kommentare
Michael cornman
Michael cornman am 6 Jul. 2016
Using the 'UserData' property of the 0 process works for calling 1 variable. What if I wanted to call more?
James Tursa
James Tursa am 7 Jul. 2016
You can use a structure. E.g., the fieldname of the structure would indicate which variable you are dealing with. In this case when you want to set a variable, you would get the structure first, assign the field to your new value, then set the structure back.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 6 Jul. 2016

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by