Problem
Write a function to generate factors for a given number using matlab. For example if the input is 28 then the output should be [1 2 4 7 14 28].Solution
Before I will start with the solution, when I have googled for whether matlab has an inbuilt function in it to generate factors I have found that there is a function, but when I have tried it in my matlab it showed an error. This may be due to the difference in the version. However, whether it is inbuilt or not understanding the algorithm, or writing your own program rather than using the inbuilt function(if they are not available) is fun and will also improve your programming skills. Going back to the solutionIn this program we have used the for loop, rem function and the if statement to accomplish the program successfully. If you don't know any of these then please read from below links:
1) For loop in matlab
2) Rem function in matlab(Remainder after division)
3) if statement in matlab
You can find the explanation for the program below the program section
Program
function result = factors(n) %This function will generate the factors of the given number %For example if input is 28 then the result will be %[1 2 7 14 28] %Create an empty vector to store the values of the factors at each %iteration result = []; %Create a for loop to loop through all the numbers below the given number %to find whether the iterator is a factor of the given number or not. for i = 1:n if rem(n,i) == 0 result = [result i]; end end
Download the above program in matlab file format from here: factors.m
Explanation
In this function I have created an empty vector to store the values of the factors at each iteration
Now digging deep you will find a for loop, I will explain this iteration by iteration so that you will understand the program easily. Just follow along and it will be simple. Let us consider that the input number is 28.
First iteration
During the first iteration, the value of i is 1 and digging deep we will encounter if statement whose condition is if the iterator divides the number evenly(i.e. without leaving any remainder), then, the lock is open for you and you can go perform the next operation, or else change your value and come again. But for now in the first iteration, rem(28,1) = 0, and thus the lock is open and the result function becomes result = [1], by this the first iteration is over and the second iteration starts.
Second iteration
During the second iteration, the value of i is changed from 1 to 2, and the if statement condition is again satisfied and the result becomes result = [1 2], second iteration is over and the third iteration starts
Third iteration
In the third iteration, i changes from 2 to 3, but the statement in the if condition gets failed and the lock is not open, the policy is if the lock doesn't open change your value and come again. Thus the third iteration comes to an end with the following values:
i = 3,
result = [1 2],
we can observe that all the values will be same except the value of i.
In this way the if statement will sort out all the factors of 28 and store them in the result function. Finally after 28 iterations i.e. after changing the values of i from 1 to 28, the results are published.
For this example the answer will be [1 2 4 7 14 28].
I have tried to explain this program, in a way that it will be easy to understand even for novice programmers. If you haven' understood this program please do let me know by contacting me, or comment below so that all will get benefited. Thanks in advance for sending the message.
If you want to download this post as pdf format so that you can read it offline then you do so by clicking here: factors.pdf
The above code was highlighted using hilite.me
Run the program and comment below the output you are getting for a given input.
Keywords: factors, matlab function
For this example the answer will be [1 2 4 7 14 28].
I have tried to explain this program, in a way that it will be easy to understand even for novice programmers. If you haven' understood this program please do let me know by contacting me, or comment below so that all will get benefited. Thanks in advance for sending the message.
If you want to download this post as pdf format so that you can read it offline then you do so by clicking here: factors.pdf
The above code was highlighted using hilite.me
Run the program and comment below the output you are getting for a given input.
Keywords: factors, matlab function