MATLAB Answers

1

How can i keep my variables after running the function?

Niloufar Hojat さんによって質問されました 2019 年 7 月 15 日
最新アクティビティ Adam Danz
さんによって 編集されました 2019 年 7 月 17 日
I have written a function that does some data anlayising on a table and then I have another function that uses that analysed data and does further analyses on it. The two functions used to be one but I have separated them. Is it possible to keep the variables once a function has run as currently all the variables in the function are cleared after running it.
Many thanks,
Nima

  2 件のコメント

KALYAN ACHARJYA
2019 年 7 月 15 日
Variabes from function file or main script?
Stephen Cobeldick
2019 年 7 月 15 日
By far the simplest, neatest, and most efficient way to pass variables from one workspace to another is to pass them as input/output variables. Have you tried doing that?

サインイン to comment.

製品


リリース

R2019a

1 件の回答

Adam Danz
回答者: Adam Danz
2019 年 7 月 15 日
編集済み: Adam Danz
2019 年 7 月 17 日
 採用された回答

" Is it possible to keep the variables once a function has run "
Yes.
Add outputs to your function if variables are immediately needed in other functions or scripts.
Otherwise, you can save any (or all) variables within a function by calling save() at the end of the function (for troubleshooting purposes).
If you are running a script, any variables within the script are already available in the caller workspace.

  3 件のコメント

Rik
2019 年 7 月 17 日
I hesitate to suggest save, as it encourages saving the entire workspace and then poofing them back with load.
I use a workaround with a separate function and a call to inputname(), which gets around the issue of having to convert your variables to a char.
Guillaume
2019 年 7 月 17 日
"I hesitate to suggest save, as it encourages saving the entire workspace and then poofing them back with load."
In addition round-tripping through a file is never going to be fast. It's certainly not the way to go.
If the two functions must share the same entire workspace then there's a fundamental design issue. If it's only a few variables, then inputs and outputs are definitiively the way to go. If it's the whole workspace then i'd question if the code should have been split.
Adam Danz
2019 年 7 月 17 日
I added a caveat to the save() suggestion. Sometimes this approach is useful when troubleshooting a function that takes a long time to run and breaks only seldomly. As far as passing variables between functions, the save/load approach is clearly a bad idea.

サインイン to comment.



Translated by