Display variable that user requests
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kelsey
am 22 Sep. 2021
Kommentiert: Kelsey
am 22 Sep. 2021
I have a program that controls a robot and various systems that runs for hours or days on end. I want a way for the user to select a variable to display to screen through input. It would look something like this...
% Existing variables in code would look something like this
var1 = 10;
var2 = 3;
% The program asks user if they want to display a variable
x = input('Enter variable value to display: ','s')
%User inputs 'var2'
disp(x)
%Matlab displays the value of var2, which is 3
Right now, of course, it would display the string that was input, not the variable that the user selected with their string input. I feel like I want a function like str2var instead of str2num...
I could do a big switch statement for the most common variables that the user might want to select, but I was hoping there was a better way to do this. Ive tried searching the web, but couldn't come up with anything. Any advice would be very appreciated.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 22 Sep. 2021
Perhaps just give them the Workspace Browser? https://www.mathworks.com/help/matlab/ref/workspace.html
You can find the names of all variables in the workspace using who or whos .
%set up for demo
aafdadf = 34213;
JO324adf = 3248.;
k_df9M = -121324;
varnames = setdiff( who(), 'varnames');
chosenvar = varnames{randi(numel(varnames))}
H = str2func("@()evalin('caller', 'disp(" + chosenvar + ")');")
H()
3 Kommentare
Walter Roberson
am 22 Sep. 2021
If the user can be trusted to not be mailicious
A) They can't be trusted not to be malicious;
B) typing mistakes
Give them a menu to select from -- a drop-down box. And you can openvar() by name
x = 'var1';
openvar(x)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!