## vibudh is talking

### Dividing an image into smaller parts using MATLAB

Here we are going to learn how to divide an image and save each part into different files. As we have already seen earlier that we can insert a image/profile picture in Facebook chat.
But the size of those images inserted were too small, now if we want to insert larger images in the Facebook chat then we are simply going to insert multiple images alligned properly so that it appears to be a big image, I call it as the ‘Jumbo Image’.

Now we can divide the image manually in the paint and taking equal part at a time, but this method is too tedious and is neither too accurate. So, the simpler way out is to use MATLAB to do the job for us. So here we will be dividing the image into multiple parts(nXm) and then uploading all the images, so that when we insert them in the chat we get a Jumbo Image in the chat box comprising of various small images that we had uploaded earlier.

Here is the MATLAB code to divide a simgle image into multiple parts and saving each part into a different file:

clear; % removes all variables from the workspace, releasing them from system memory
%Taking the image from the given URL, it could have been the name of the file with extension if the root folder
n =3; %defining the number of rows
m =3; %defining the number of columns
a=’a'; %defining a random file name
NewImage = ‘newimage.gif'; %granting permission to create a file and write in it
Image = imresize(Image, [512 512]); %resizing the image, this is a mandatory step

rf = floor(512/n); %generating the number of row pixels in the new file
cf = floor(512/m); %generating the number of row pixels in the new file

for v = 1:n
for s = 1:m %nXm files need to be made
startr = (v-1)*rf;
startc = (s-1)*cf;
for i = 1 : rf
for j = 1 : cf
for k = 1:3 %loop for RGB values

Img1(i,j,k) = Image(startr+i, startc+j,k);
end
end
end

a = strcat(a,’a’); %generating a new file name
NewImage = strcat(a,’.jpg’);
imwrite( Img1, NewImage);
done=1
end
end

It is generally adviced to make a seperate folder in your PC for each Jumbo Image, it simple makes the handing of the files simpler.

### Inserting profile picture in Facebook chat

For adding profile picture in the facebook chat, all you need do is put the unique id in double square brackets [[ ]]. If you use the name, you might get your friend only if he has a unique name that depends on the facebook database, so it is always advisable to go for the unique Ids.

Example:-
For inserting my facebook profile picture all you need to do is just type

What is my facebook unique Id?
Facebook allots all its users a unique Id, that is used to identify its user. It can be seen when you go to the timeline or the homepage of that person/page.

Here my facebook id is vibudhsingh which is written just after http://www.facebook.com. Here are few more examples of the facebook unique Id, hope that helps you better to find out your facebook unique Ids.

This slideshow requires JavaScript.

This same technique is used to insert jumbo sized images in facebook chat:

There are some limited sized images that can be used in the facebook chat.

To have them on your chat all you need to do is just copy the stuff below and paste it in your chat:

[[255006724575192]] [[255006727908525]] [[255006737908524]] [[255006734575191]] [[255006731241858]]
[[255006827908515]] [[255006831241848]] [[255006824575182]] [[255006817908516]] [[255006821241849]]
[[255006874575177]] [[255006871241844]] [[255006884575176]] [[255006877908510]] [[255006881241843]]
[[255006934575171]] [[255006931241838]] [[255006941241837]] [[255006944575170]] [[255006937908504]]
[[255007004575164]] [[255007001241831]] [[255006994575165]] [[255006997908498]] [[255006991241832]]
[[255007084575156]] [[255007101241821]] [[255007077908490]] [[255007091241822]] [[255007081241823]]

2. Jack Sparrow

[[298356520217565]] [[298356516884232]] [[298356506884233]] [[298356510217566]]
[[298356513550899]] [[298356620217555]] [[298356606884223]] [[298356616884222]]
[[298356610217556]] [[298356613550889]] [[298356673550883]] [[298356676884216]]
[[298356666884217]] [[298356680217549]] [[298356670217550]] [[298356740217543]]
[[298356733550877]] [[298356743550876]] [[298356730217544]] [[298356736884210]]
[[298356823550868]] [[298356810217536]] [[298356820217535]] [[298356826884201]]
[[298356813550869]] [[298356906884193]] [[298356896884194]] [[298356900217527]]
[[298356903550860]] [[298356893550861]] [[298356950217522]] [[298356946884189]]

3. Superman

[[299528860107644]] [[299528863440977]] [[299528866774310]] [[299528856774311]]
[[299528870107643]] [[299528950107635]] [[299528943440969]] [[299528946774302]]
[[299528953440968]] [[299528956774301]] [[299529013440962]] [[299529016774295]]
[[299529010107629]] [[299529003440963]] [[299529006774296]] [[299529060107624]]
[[299529063440957]] [[299529066774290]] [[299529070107623]] [[299529073440956]]
[[299529173440946]] [[299529183440945]] [[299529180107612]] [[299529176774279]]
[[299529186774278]] [[299529243440939]] [[299529236774273]] [[299529240107606]]

4. Elmo

[[302117289844540]] [[302117283177874]] [[302117276511208]] [[302117279844541]] [[302117286511207]] [[302117366511199]]
[[302117369844532]] [[302117373177865]] [[302117383177864]] [[302117379844531]] [[302117426511193]] [[302117436511192]]
[[302117429844526]] [[302117423177860]] [[302117433177859]] [[302117523177850]] [[302117529844516]] [[302117526511183]]
[[302117536511182]] [[302117533177849]] [[302117606511175]] [[302117596511176]] [[302117599844509]] [[302117593177843]]
[[302117603177842]] [[302117646511171]] [[302117649844504]] [[302117659844503]] [[302117656511170]] [[302117653177837]]
[[302117706511165]] [[302117703177832]] [[302117699844499]] [[302117709844498]] [[302117696511166]] [[302117749844494]]

5. Troll face

[[242538225822042]] [[242538222488709]] [[242538232488708]] [[242538219155376]] [[242538229155375]] [[242538339155364]]
[[242538335822031]] [[242538342488697]] [[242538345822030]] [[242538349155363]] [[242538392488692]] [[242538395822025]]
[[242538399155358]] [[242538402488691]] [[242538405822024]] [[242538475822017]] [[242538472488684]] [[242538489155349]]
[[242538492488682]] [[242538485822016]] [[242538562488675]] [[242538565822008]] [[242538569155341]] [[242538575822007]]
[[242538572488674]] [[242538612488670]] [[242538625822002]] [[242538619155336]] [[242538622488669]] [[242538615822003]]
[[242538675821997]] [[242538682488663]] [[242538672488664]] [[242538679155330]] [[242538685821996]] [[242538742488657]]

6. Mr. Bean

[[255016264574238]] [[255016271240904]] [[255016277907570]]
[[255016267907571]] [[255016274574237]] [[255016384574226]]
[[255016387907559]] [[255016394574225]] [[255016401240891]]
[[255016391240892]] [[255016464574218]] [[255016454574219]]
[[255016457907552]] [[255016461240885]] [[255016451240886]]
[[255016537907544]] [[255016531240878]] [[255016534574211]]
[[255016541240877]] [[255016527907545]] [[255016634574201]]

I hope you guys enjoy it on your chat, I ll shortly tell you how it is done so that you can yourself add a picture of your own in the chat!!

### Control System: State Space using MATLAB

For a system defined by its state space variables, it is possible to determine the controllability, observability and hence the stability of the system using MATLAB. We will be discuss the same here with the help of an example.

A system is said to be controllable if we can transform the state of a system from xo to x(t) with the help of a control function u(t) over a finite period of time. If from measurements of output y(t) taken over a finite period of time, state of  a system x(t) can be determined, then the system is observable.

If a system is both controllable and observable then we can say that the system is stable.

Consider a linear time invariant(LTI) system described by the state equations:

x = A x + B u

y = C x + D u

Here x, y are the state variables, u represents the unit step response and A, B, C, D are the constants which depend on the system.

For a model with Nx states, Ny outputs, and Nu inputs:

• a is an Nx-by-Nx real- or complex-valued matrix.
• b is an Nx-by-Nu real- or complex-valued matrix.
• c is an Ny-by-Nx real- or complex-valued matrix.
• d is an Ny-by-Nu real- or complex-valued matrix.

sys = ss(a,b,c,d,Tscreates the discrete-time model

with sample time Ts (in seconds). Set Ts = -1 or Ts = [] to leave the sample time unspecified.

Matlab Code:-

a=[0 1 0; 0 0 1; -6 -11 -6];

b=[0; 0; 2];

c=[1 0 0];

d=[0];

sys = ss(a,b,c,d);                                %Creating the state space model

xo=[0 0 0];                                           %Setting initial conditions

initial(sys,xo)

step(sys);                                               %for step response

ob = obsv(sys);                                   %for calculating observability

unob = length(a)-rank(ob)             %for calculating unobservability

ct = ctrb(sys);                                      %for calculating controllability

unct = length(a)-rank(ct)                %for calculating uncontrollability

eigen = eig(a)                                        %for obtaining the eigen values

Output:-

unob = 0

unct =0

eigen = -1.0000

-2.0000

-3.0000

As the system is controllable and observable, hence we can say that the system is stable.

### Control System: Block Diagrams Reduction using MATLAB

Most of the circuits in Control System today are represented by simple blocks that help us understand the function of each block in a better way. Is also helps the designers to easily make amendments in the circuit for better functionality and testing purpose. But the problem with Block Diagrams is that having blocks and their feedbacks makes the transfer function on the system to tedious to calculate.

Here we are going to study block reduction using MATLAB. The blocks connected in series, parallel and as feedbacks are at times very tedious to compute. MATLAB allows solving of such blocks directly using some functions that is being discussed below with the help of the example. Here we have to calculate C(s)/R(s), that is taken as T(s).

The MATLAB code for the above problem is:

num1 = [1 2];
den1 = [3 1 0];
G1 = tf(num1, den1)                      %Making G1 as the tranfer function
G2 = tf( [2], [1 7] )
G3 = tf( [1 5], [1 6 3 ] )
G4 = tf( [1], [1 0] )

T1 = parallel(G1, G2)                   %as G1 and G2 are in parallel
T2 = series(T1, G3)                       %as T1 and G3 are in series
T = feedback(T2, G4, -1)            %as G4 is the negative feedback

Here we use the tf() function to get the transfer function
parallel() and series() functions according to the requirement
and the feedback() function for feedback.

The output for the above code is as follows:

s + 2
———
3 s^2 + s

Transfer function:
2
—–
s + 7

Transfer function:
s + 5
————-
s^2 + 6 s + 3

Transfer function:
1
-
s

Transfer function:
7 s^2 + 11 s + 14
——————–
3 s^3 + 22 s^2 + 7 s

Transfer function:
7 s^3 + 46 s^2 + 69 s + 70
—————————————–
3 s^5 + 40 s^4 + 148 s^3 + 108 s^2 + 21 s

Transfer function:
7 s^4 + 46 s^3 + 69 s^2 + 70 s
——————————————————-
3 s^6 + 40 s^5 + 148 s^4 + 115 s^3 + 67 s^2 + 69 s + 70

Here we can see that the transfer function for the block diagram is very complex and tedious to deduce. Which can be obtained by using MATLAB very easily.

One of my favourite childhood games that I love a lot even today, Pacman, can be played on Google even today. Google allows its users to directly play the game without having to install anything. The interesting part is that you can use multiple player by inserting a coin. Have fun!!

Google Gravity is some fun and is definitely worth trying. All you need to do is just type in the search tab “google gravity” and then hit the “I’m feeling lucky” button and have fun. But before doing that you will have to ensure that you have selected the option “Never Show Instant Results” in the setting. You can also go the link below to experience it.

### Counting Sort – An optimised technique

In Computer Science, counting sort is a way of sorting of a collection of numbers found in a predefined range. This property is used in Counting Sort technique to make the running time linear in the number of items and the maximum key values. So it is very useful in situations where the number of items are significantly larger than the range. Counting Sort in used mostly as a subroutine in Radix Sort, which makes the sorting technique efficient even with larger values of the range.

A basic algorithm of the Counting Sort is given below that is used and discussed in most places:

/*array[] is the original array with length array.lenght
f[]  and cf[] are the frequency and cumulative frequency with length r(length of the range)
s[] is the sorted array
*/

for( int i = 0; i < array.length; i++)
f[array[i]]++;                                        //Calculating the Frequency for each element

cf[0] = f[0];                                            //Calculating the Cumulative Frequency for each element
for(int i = 1; i < r-1; i++)
cf[i] = f[i] + cf[i-1];

for( int i = n-1; i >= 0; i–)
{ s[cf[a[i]]] = a[i];
cf[a[i]]–;
}

We can see that in the algorithm discussed worldwide there is use of 2 extra arrays for calculating the frequency and cumulative frequency for the elements. Now there is a simpler method for the Counting Sort that we are going to discuss below:

/*array[] is the original array with length array.lenght
f[] is the frequency with length r(length of the range)
s[] is the sorted array
*/

for( int i = 0; i < array.length; i++)
f[array[i]]++;                                        //Calculating the Frequency for each element

int count =0;                                        //variable for the value of sorted elements
for( int i = 0; i<r; i++)                      //putting the value one by one
while ( f[i] > 0 )
{s[count] = i;
f[i]–;
count++;
}

I consider this algorithm better for Counting sort method as it is a simpler method with lesser steps and does not uses an extra array for storing the cumulative frequency of the array.