Display variable that user requests

8 views (last 30 days)
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.

Accepted Answer

Walter Roberson
Walter Roberson on 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))}
chosenvar = 'k_df9M'
H = str2func("@()evalin('caller', 'disp(" + chosenvar + ")');")
H = function_handle with value:
@()evalin('caller','disp(k_df9M)')
H()
-121324
  3 Comments
Walter Roberson
Walter Roberson on 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)
Kelsey
Kelsey on 22 Sep 2021
Thanks for your help with this!

Sign in to comment.

More Answers (0)

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!