How to get all workspace variables with their respective value from within a function?

18 次查看(过去 30 天)
Say I have some variables
var1 = 3;
str2 = "MATLAB";
syms x y
eqn1 = x + y;
Say I want to get all the variables in this workspace with their respective values from within some function:
function listVars()
allVarNames = evalin( 'base', 'who' )
allVarValues = ???
t = table(allVarnames, allVarValues)
end
Is this possible? If not, is it possible if the variables are of the same type?
----------------------------------------------
I already tried ??? =
evalin('base','allVarNames')
%and
evalin('base',allVarNames)
But these result in these errors respectively:
Error using evalin
Unrecognized function or variable 'allVarNames'.
%and
Error using evalin
Must be a text scalar.
  2 个评论
Stephen23
Stephen23 2021-1-28
编辑:Stephen23 2021-1-28
Is there a particular reason why you cannot simply pass the variables as input/outout arguments?
What is the actual goal here? Please explain the context a little more.
Erithax
Erithax 2021-1-28
I'm writing a function that automatically displays the equations of a section in the pretty (~live editor) format. So I don't have to do it via the live editor or via calling pretty(eqn1) for every equation I write. So I'd like it to show in a table with the equation names in the first column, and the equations themselves in the 2nd collumn.

请先登录,再进行评论。

采纳的回答

Erithax
Erithax 2021-1-28
I was able to solve it myself by using a for-loop and the string() function:
function listVars()
allVarNames = evalin( 'base', 'who' )
for i = 1:1:numel(allVarNames)
allVarValues(i) = evalin('base',string(allVarNames(i)))
end
allVarNames = string(allVarNames)
allVarValues = string(allVarValues)'
table(allVarNames,allVarValues)
end
NOTE: If the first variable (alphabetically) is not a symbolic variable, but there are other symbolic variables then this code will throw an error because then allVarValues doesn't have the right type to handle symbolic variables.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by