## M-point moving average filter MATLAB Program

Hi friends, today we are going to learn a how to write a MATLAB program for m point moving average filter.

## MATLAB Program for M-point moving average filter

Steps for writing M-point moving average filter program in MATLAB:

1. Take a given signal 2n*(0.9)^n and denote it by s(n).
2. Then generate a random noise signal having the same length (50) as that of s(n) and denote it by d.
3. Then add s+d and save it in p, i.e. p=s+d.
4. We know that the formula for m point moving average filter is given by 5. To determine summation use one for loop.
6. Finally, divide summation by M, you will get original signal.

### The MATLAB program:

```clc;
clear all;
close all;
n=1:50;
s(n)=2*n.*(0.9).^n;
subplot(2,2,1)
stem(s)
xlabel('Original signal')
d=rand(1,50);
subplot (2,2,2)
stem(d)
xlabel('Noise signal')
p=s+d;
subplot (2,2,3)
stem(p)
xlabel('Corrupted Signal')
m=100;
xu=0;
for i=1:m
d=rand(1,50);
x=s+d;
xu=xu+x;
end
xu=xu/m;
subplot(2,2,4)
stem(xu)
xlabel('Output signal')```

OUTPUT of M-Point moving average filter :

## Introduction to Z-Transform:

Z-transform of a signal provides a valuable technique for analysis and design of the discrete time signal and discrete-time LTI system.

Z-Transform of a discrete time signal has both imaginary and real part. The plot of the imaginary part versus real part is called as the z plane. The poles and zeros of the discrete time signals are plotted in the complex z plane. Pole-zero plot is the main characteristics of the discrete time signals. Using pole-zero plot we can check the stability of the system which we will see in the upcoming posts.

Following are some of the main advantages of the Z-Transform:

• We can simplify the solution of a differential equation using Z-Transform.
• By the use of Z-Transform, we can completely characterize given discrete time signals and LTI systems.
• The stability of the LTI system can be determined using a Z-Transform.
• Mathematical calculations can be reduced by using the Z-Transform. For example, the convolution operation is transformed into a simple multiplication operation.

### Z-Transforms:

There are two types of Z-Transform:

1. Single sided Z-Transform.
2. Double sided Z-Transform.

### Single sided Z-Transform:

Single sided Z-Transform can be defined as, ### Double sided Z-Transform:

Double sided Z-Transform can be defined as, In single sided Z-Transform only positive values of n are used (from 0 to 8) hence called single sided, whereas in the double sided values of n are ranging from -8 to +8.

### Representation of the Z-Transforms:

Z-Transform of the signal x(n) is represented as, The relation between x(n) and X(Z) is denoted as follows: Where X(Z) is the Z-Transform of the signal x(n). The arrow is bidirectional which indicates that we can obtain x(n) from X(Z) also, which is called as inverse Z-Transform.

x(n) and X(Z) is called as Z-Transform pair.

### Region of convergence (ROC):

“Region of convergence is defined as a set of all values of Z for which X(Z) has a finite value. It is very important to denote ROC every time when we find Z-Transform.”

### Significance of ROC:

• ROC will decide whether the given system is stable or unstable.
• ROC is also useful for determining the type of sequence. i.e. whether the system is causal or non-causal, finite or infinite.

## Vehicle Number Plate Detection and Character Recognition using MATLAB

Before understanding the concept behind image reading and recognition, you should understand “Fourier Transform” and basic matrix operations in Matlab.

1) Let’s consider we have captured below the picture of the vehicle, in which number plate and its font is clear with the surrounding contrast.

2) To locate the car license plate and identify the characters, we use the Matlab platform to provide some image processing functions to Fourier transform the character template and the image to be processed as the core idea. The basic method is as follows:

1. Read the image to be processed and convert it to a binary image. After converting, using the threshold of 0.2 near the license plate characters most clearly, the least points (as shown below)
```I = imread('car.jpg');
I2 = rgb2gray(I);
I4 = im2bw(I2, 0.2);```
2. Remove the area where the image is too small to be sure of the license plate.
`bw = bwareaopen(I4, 500);`
3. To locate the license plate, inflate the white area, corrode to unrelated small objects, including the license plate characters.
```se = strel('disk',15);
bw = imclose(bw,se);```
4. At this point the number plate where the white connectivity domain is clearly visible, but outside the black area, there is a larger white connectivity domain and the license plate where the domain surrounded by. It is necessary to fill it.
`bw = imfill(bw,[1 1]);`
5. Now, let’s find the connectivity domain boundary. While retaining this graphic for later to mark it on it.
```[B,L] = bwboundaries(bw,4);
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on```
6. Finding the one that is most likely to be the number plate in all connected domains. The standard of judgment is that the aspect ratio of the license plate is about 4.5: 1, and its area is related to the circumference:(4.5 × L × L) / (2 × (4.5 + 1) × L) 2 ≈ 1/27 ,Which is characterized by,metric = 27 * area / perimeter ^ 2as the matching degree of the connected domain, the closer it is to 1, the more likely that the corresponding connected domain is 4.5: 1.

## MATLAB Program

```stats = regionprops(L,'Area','Centroid');
for k = 1:length(B)
boundary = B{k};
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
area = stats(k).Area;
metric = 27*area/perimeter^2;
metric_string = sprintf('%2.2f',metric);
if metric >= 0.9 && metric <= 1.1
centroid = stats(k).Centroid;
plot(centroid(1),centroid(2),'ko');
goalboundary = boundary;
s = min(goalboundary, [], 1);
e = max(goalboundary, [], 1);
goal = imcrop(I4,[s(2) s(1) e(2)-s(2) e(1)-s(1)]);
end
text(boundary(1,2)-35,boundary(1,1)+13,...
metric_string,'Color','g',...
'FontSize',14,'FontWeight','bold');
end
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2),boundary(:,1),'w','LineWidth',2)
end```
7. The license plate image is highlighted and expanded to a square of 256 × 256 (left as shown below) so that the matrix rotation operation is performed in the following “Fourier transform”.
```goal = ~goal;
goal(256,256) = 0;
figure;
imshow(goal);```
8. Read a character template from the file (with “P” as an example, the template image is taken directly from the above binary image). Calculate the Fourier descriptor for the image and calculate the descriptor with a predefined decision function. In the transformed image, the level of brightness indicates the degree to which the corresponding region matches the template (as shown in the figure below).
```w = imread('P.bmp');
w = ~w;
C= real(ifft2(fft2(goal).*fft2(rot90(w,2),256,256)));```
9. By checking the maximum value of C, the test determines a suitable threshold (where 240 is appropriate), showing the point where the brightness is greater than the threshold, that is, the highest degree of matching to the template (see below).
```thresh = 240;
figure;
imshow(C > thresh);```

In contrast to the left and right graphs, it can be shown that the character “P” is recognized and positioned. The same way that you can identify and locate other characters.

3) This method is generally easier to understand, Matlab function hides the Fourier transform and other complex calculations. Disadvantages: In the positioning of the license plate, the program specifically according to the characteristics of the given image design, there is no universality. In character recognition, only characters that are substantially consistent with a given template are recognized. License plate size, angle, light, integrity, clarity changes, it can not be identified. At the same time for “8” and “B” similar characters, recognition is often confused.

## Representation of Basic Discrete Time Signal using MATLAB

Hi friends, today we are going to discuss discrete time signals and how to plot graphs of different discrete time signals such as step signal, a ramp signal, impulse function, exponential, sine and cosine signals using MATLAB.

Before going towards actual programming part, let us recall the definition of the discrete time signal.

“In discrete time signal, the value of the signal is specified only at a specific time. So signal represented at “discrete interval of time” is called as a discrete time signal.”

### MATLAB Program:

```clc;
clear all;
close all;
x=[0:15];
for i=1:16
y(i)=1;
end
subplot(2,3,1)
stem(x,y)
title('Discrete time Step Function')
xlabel('Samples')
ylabel('Step function')
for i=1:16
y(i)=x(i);
end
subplot(2,3,2)
stem(x,y)
title('Discrete time Ramp Function')
xlabel('Samples')
ylabel('Ramp signal')
y=[zeros(1,4),1,zeros(1,11)];
subplot(2,3,3)
stem(x,y)
title('Discrete time Impulse Function')
xlabel('Samples')
ylabel('Impulse function')
for i=1:16
y(i)=exp(-0.22*i);
end
subplot(2,3,4)
stem(x,y)
title('Discrete time Exponential Function')
xlabel('Samples')
ylabel('Exponential function')
z=[1:35]
for i=1:35
y(i)=sin(2*pi*0.1*i)
end
subplot(2,3,5)
stem(z,y)
title('Discrete time Sine Function')
xlabel('Samples')
ylabel('Sine function')
z=[1:35]
for i=1:35
y(i)=cos(2*pi*0.1*i)
end
subplot(2,3,6)
stem(z,y)
title('Discrete time Cosine Function')
xlabel('Samples')
ylabel('Cosine function')```

### Explanation:

• Representation of discrete time step function:
```x=[0:15];
for i=1:16
y(i)=1;
end
subplot(2,3,1)
stem(x,y)
title('Discrete time Step Function')
xlabel('Samples')
ylabel('Step function')```

For representing discrete time step function, let us consider x-axis represents a number of samples and y-axis represents corresponding values of the signal. Here we use two matrix x and y. x=[0:15] represents matrix ‘x’ contains 16 elements from 0 to 15. Then we used one for loop from 1:16 (16 times) in which we define matrix y, which stores ‘1’ entire the matrix. Then we give command subplot(2,3,1). Here we used subplot command because we want all the basic signals on a single display. (2,3,1) represents there are 2 rows and 3 columns of graphs (it means 2*3=6 graphs are possible) 1 indicates that we want this graph at first position.

As we know for continuous signal plotting we use plot command but for a discrete time signal, we have to use stem command.

• Similarly, for discrete time ramp signal, we use y(i)=x(i) keeping all the program same.
• For impulse function we use y=[zeros(1,4),1,zeros(1,11)] that means first 4 elements of the matrix are ‘0(zeros)’ 5th element is ‘1’ and from 6th to 16th it is again ‘0’. Thus y becomes 16 element matrix. Thus we can plot a graph of impulse function using Matlab.
• For exponential signal, we have used exp(-0.22*i). Here negative sign indicates that the nature of the exponential signal is decreasing. But if you remove the negative sign it will become a simple increasing exponential signal.
• Similarly, we can plot discrete time sine and cosine functions using MATLAB