Problem:
Write a function in Matlab to check whether the given number is palindrome or not?
Solution:
Here we will create a function in MATLAB which will check whether the number is palindrome or not.What is palindrome?
A palindrome is a number which when reversed will give the original number.
Example: Consider 1221, if it is reversed then the number is again 1221.
Consider 1234, if the number is reversed then the number is 4321 which is not the original number 1234 and hence 1234 is not a palindrome number.
To know more about palindrome numbers click here: Wikipedia: Palindrome
Note that the explanation for the program in below the program section.
Program
function tf = ispalindrome(n) %this function will check whether the given number is %palindrome or not %Fist we will assume that the given number is palindrome tf = true; %Convert the number to string so that we can use the number as %a vector n = num2str(n); %Now we have to find the number of %iterations required to check the given number %If the number is even then length/2 %If the number is odd then (length-1)/2 if rem(length(n),2) == 0 len = length(n)/2; else len = (length(n)-1)/2; end %A for loop to iterate through the number to %check for the same numbers for i = 1:len if n(i) ~= n(length(n)+1-i) tf = false; break; end end
In this function first we will assume that the given number is true. After the program is executed and if the number is found to be a non palindrome number then the variable tf is changed from true to false.
Now we will assume that the input given by the user in the function is a number and we will convert the number to string to proceed further in the program.
After we have reached here to proceed further we have two cases to check whether the number is palindrome or not
For example let us consider a the number 1221 for instance.
As the length of the number is even(4) we can simply break the number into two parts and then check the number is same for both the sides. After we break the number we have two parts: 12 and 21.
First check for number with index 1 == number with index 4
Next check for number with index 2 == number with index 3
This continues for larger number in similar fashion.
Here we can write the above iteration in mathematical form as follows:
number(i) == number(length(number)-i+1)
Where i ranges from 1 to half of the length of the number.
So for the above example i ranges from 1 to 4/2 = 2.
To get a clear understanding try with different numbers whose lengths are even.
To understand this easily consider the number 12321 whose length is odd(5).
Now I will divide the number into three parts 12,3,21, I will omit 3 and thus finally we have two parts 12,21, and the same check goes on as case 1. The condition can be written mathematically as:
number(i) == number(length(number)-i+1)
Where i ranges from 1 to half of the (length of the number - 1).
So for the above example i ranges from 1 to 5-1/2 = 2.
To get a clear understanding try with different numbers whose lengths are odd.
As we have got a clear understanding of the lengths to be used we will use an if and else statement to create the iteration range to use in for loop.
finally we will iterate through the number to check whether the numbers are same as their counterparts.
Get the pdf version of this function and its explanation to read it offline: ispalindrome.pdf
The above code was formatted using hilite.me
Run the program and comment below the output you are getting for a given input.
Keywords: Matlab function, palindrome number, if else
Now we will assume that the input given by the user in the function is a number and we will convert the number to string to proceed further in the program.
After we have reached here to proceed further we have two cases to check whether the number is palindrome or not
Case1: Length of the Input number is even
If length of the input number is even then we can simply divide the number into two parts and just check whether the first number is equal to last number or not and so on.For example let us consider a the number 1221 for instance.
As the length of the number is even(4) we can simply break the number into two parts and then check the number is same for both the sides. After we break the number we have two parts: 12 and 21.
First check for number with index 1 == number with index 4
Next check for number with index 2 == number with index 3
This continues for larger number in similar fashion.
Here we can write the above iteration in mathematical form as follows:
number(i) == number(length(number)-i+1)
Where i ranges from 1 to half of the length of the number.
So for the above example i ranges from 1 to 4/2 = 2.
To get a clear understanding try with different numbers whose lengths are even.
Case2: Length of the Input number is odd
If the length of the input number is odd, here also we will divide the number to two parts but a number is left which is left because it doesn't have a pair to check and thus it can be any number.To understand this easily consider the number 12321 whose length is odd(5).
Now I will divide the number into three parts 12,3,21, I will omit 3 and thus finally we have two parts 12,21, and the same check goes on as case 1. The condition can be written mathematically as:
number(i) == number(length(number)-i+1)
Where i ranges from 1 to half of the (length of the number - 1).
So for the above example i ranges from 1 to 5-1/2 = 2.
To get a clear understanding try with different numbers whose lengths are odd.
As we have got a clear understanding of the lengths to be used we will use an if and else statement to create the iteration range to use in for loop.
finally we will iterate through the number to check whether the numbers are same as their counterparts.
Get the pdf version of this function and its explanation to read it offline: ispalindrome.pdf
The above code was formatted using hilite.me
Run the program and comment below the output you are getting for a given input.
Keywords: Matlab function, palindrome number, if else