Problem
Write a script that will:- Generate a random integer in the range from 2 to 5
- Loop that many times to
- Prompt the user for a number
- Print the sum of the numbers entered thus far with one decimal place
There are many signal processing applications. Voltages, currents, and sounds
are all examples of signals studied in a diverse range of disciplines such as
biomedical engineering, acoustics, and telecommunications. Sampling discrete data
points from a continuous signal is an important concept.
Solution
This problem has been taken from the book A practical introduction to Matlab by Stormy AttawayWe will solve this problem by using Matlab for loop and Matlab while loop. Also we will generate a random integer in the matlab using the rand function in Matlab within a given interval.
Some of the concepts you need to know to solve this problem are as follows:
1) rand function in Matlab
2) for loop , youtube for loop
3) while loop, youtube while loop
4) colon operator, youtube colon operator
5) request user input with matlab
6) variables in matlab
7) frprintf in matlab
Program
1
2
3
4
5
6
7
8
9
10
| r = 2 + (5-2).*rand(1,1);
sum = 0;
for i = [1:r]
number = input('Enter the number: ');
sum = sum+number;
end
fprintf('The sum is %.1f for the numbers you have entered!\n',sum)
|
Explanation
Line 1: Before I start explaining this line type the following code in the command prompt:
>>help rand
Read what ever you have been displayed on the screen. What you fill find is something which tells about rand. Please don't leave any part of what is displayed as because it is small. It will be really helpful for you in the future.
If you have read that paragraph then you should understand everything except the period(.) before the asterisk. As rand(x,y) generates a matrix of size x by y, we cannot directly multiply a number to it. If you want to do scalar multiplication or simply multiply a number with a matrix then you will have to put a period in front of the asterisk saying Matlab that it is a matix and do scalar multiplication. All the remaining you should read from the help command!(Atleast for understanding this program you will read the document generated. Please read it, it will surely help you a lot in future).
Line 3: We are creating a variable with a value 0;
Line 5-8: Let us understand this part by looking at iteration by iteration. Also let us assume that the random number generated is 3.
When the first iteration starts the value of i is 1, and the line 6 gets executed asking the user to enter a value. If the user enters a number say 15. Now the on line seven the value of sum is changed to the previous value of the sum and the number the user has entered just before on line 6. Here in the first iteration the value becomes 15(sum+number = 0+15).
Now in the second iteration the value of i becomes 2 and now again let say the user has entered a value of 20 for this prompt. Now on line 7 the value of the sum becomes 35(sum+number = 15+20)
In this way the loop will be executed a random number of times in total and the random number is decided by a computer. But for this example we have assumed the random number to be 3 and thus the program will iterate 3 times.
Line 10: We are displaying the value of the sum of all the numbers for the numbers that the user has entered.
If you have read that paragraph then you should understand everything except the period(.) before the asterisk. As rand(x,y) generates a matrix of size x by y, we cannot directly multiply a number to it. If you want to do scalar multiplication or simply multiply a number with a matrix then you will have to put a period in front of the asterisk saying Matlab that it is a matix and do scalar multiplication. All the remaining you should read from the help command!(Atleast for understanding this program you will read the document generated. Please read it, it will surely help you a lot in future).
Line 3: We are creating a variable with a value 0;
Line 5-8: Let us understand this part by looking at iteration by iteration. Also let us assume that the random number generated is 3.
When the first iteration starts the value of i is 1, and the line 6 gets executed asking the user to enter a value. If the user enters a number say 15. Now the on line seven the value of sum is changed to the previous value of the sum and the number the user has entered just before on line 6. Here in the first iteration the value becomes 15(sum+number = 0+15).
Now in the second iteration the value of i becomes 2 and now again let say the user has entered a value of 20 for this prompt. Now on line 7 the value of the sum becomes 35(sum+number = 15+20)
In this way the loop will be executed a random number of times in total and the random number is decided by a computer. But for this example we have assumed the random number to be 3 and thus the program will iterate 3 times.
Line 10: We are displaying the value of the sum of all the numbers for the numbers that the user has entered.
Program with while loop
1
2
3
4
5
6
7
8
9
10
11
12
| r = 2 + (5-2).*rand(1,1);
i = 1;
sum = 0;
while i<=r
number = input('Enter the number: ');
sum = sum+number;
i = i+1;
end
fprintf('The sum is %.1f for the numbers you have entered\n',sum)
|
I have saved this program as prompt_input_while.m on my local computer.
Explanation for with while loop
Line 1: This is same as the previous program
Line 3: We are creating a variable i = 1 to be used in the while loop.
Line 4: This is same as the previous program
Line 6-10: We will understand this program iteration by iteration taking an example. Consider that the random number that the computer has generated is 2.
Now in the first iteration i = 1(see line 3) and 1<=2 and as the condition satisfies and the while loop gives green signal to execute code inside its stomach!
As in the previous program the value of number is asked its is added to the sum variable.
But the magic can be seen from here, the value of i is increased by one and the second iteration starts. Now the value of i is checked again with r, remember that the value has changed from 1 to 2. But again we see that the condition gets satisfied and the body code gets executed. But for the third time the value of i becomes 3 and the condition is not met and that while loop is not executed again anymore.
Line 12: Finally the value is displayed to the user in neat and clear format.
Guys if you have not understood the loop please don't hesitate to contact me or comment your email id I will help you personally. When I studied the loops for the first time I couldn't understand for a lot of time until my teacher explained me in a very clear spoon feeding format.
Try it yourself
1) Write a program to ask the user to enter any two values in the starting. We are not going to use them for summation, instead we are going to use them as our range of random number value that can be generated. Speaking according to the above program you will ask the user to enter the values instead of 2 and 5 and thus not assuming yourself.
Input/Output
Prompting the user to enter a number for random number of times using Matlab |
Summary
As always thanks for stopping by. Please do leave a comment below or contact me if you have a doubt or didn't understand anything or have a suggestion. You can contact me here: Contact me.
The above program was high lighted using hilite.me
Keywords: Matlab applications, for loop, while loop, iterations