MATLAB Help -- how to ask user for 2 input variables

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 5K views
sflesock
Messages
1
Reaction score
0
I have an assignment where we have to ask the user for a number of data points which then we will graph a linear regression.


Enter the number of input data points: 7
Enter [x y] pair for point 1: [1.1 1.01]
Enter [x y] pair for point 2: [2.2 2.30]
Enter [x y] pair for point 3: [3.3 3.05]
Enter [x y] pair for point 4: [4.4 4.28]
Enter [x y] pair for point 5: [5.5 5.75]
Enter [x y] pair for point 6: [6.6 6.48]
Enter [x y] pair for point 7: [7.7 7.84]


This is what the program should look like as we are asking the user for the inputs. (The brackets are what the user inputs). How should the code look to get 2 separate variables? Any help would be greatly appreciated!
 
Physics news on Phys.org
Matlab provides you with the inputdlg function for these purposes. Here is the documentation:
https://in.mathworks.com/help/matlab/ref/inputdlg.htmlAt the prompt, you will get a dialog box asking you for the various inputs. Put your code into a loop, and for each set, ask for the values of x and y using the above function.
Matlab:
prompt = {'Enter x:', 'Enter y:'};
dlgtitle1 = 'Enter values for point ';
for i=1:7
    dlgtitle = [dlgtitle1, num2str(i)];
    answer = inputdlg(prompt, dlgtitle);
    %extract x and y from answer
end
The answer matrix will have the two input values of x and y. Just extract them into your matrix for x and y.
 
Last edited:
If you're looking to prompt for text input as in your example, you can use the INPUT function with the 's' argument, you can add parsing code yourself. The 's' option captures the input as a string, so it can contain anything. Like so:

Code:
question = ['Enter [x y] pair for point ', num2str(k), ' '];  % I'm assuming k is the point number.
userinput = input(question, 's');
xy = str2num(userinput);

That will work if the user properly formats their input as two numbers separated by a space or comma, but might throw an error if their input syntax is incorrect. So you should probably embed it in a TRY... CATCH... END block.