Tuesday, 9 August 2016

Calculus using MATLAB 12 - factorization of an expression


Factorization of Algebraic Expressions


The factor function factorizes an expression. The following example demonstrates the concept:

Example


Create a script file and type the following code:


syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])

When you run the file, it displays the following result:


ans =
(x - y)*(x^2 + x*y + y^2)

ans =
[ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]


Monday, 8 August 2016

Calculus using MATLAB 11 - expanding and collecting of expressions in Octave


Expanding and Collecting Equations in Octave


You need to have symbolic package, which provides expand and collect command to expand and collect an equation, respectively. The following example demonstrates the concepts:

When you work with many symbolic functions, you should declare that your variables are symbolic but Octave has different approach to define symbolic variables. Notice the use of Sin and Cos which are also defined in symbolic package.

Create a script file and type the following code:


% first of all load the package, make sure it’s installed.

pkg load symbolic

% make symbols module available

symbols

% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');

% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))

% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)

When you run the file, it displays the following result:


ans =
-45.0+x^2+(4.0)*x

ans =
210.0+x^4-(43.0)*x^2+x^3+(23.0)*x

ans =
sin((2.0)*x)

ans =
cos(y+x)

ans =
x^(3.0)*(-7.0+x)

ans =
(-3.0+x)*x^(4.0)*(-5.0+x)


Calculus using MATLAB 11 - expanding and collecting of expressions


Expanding and Collecting Equations in MATLAB


The expand and the collect commands expands and collects an equation respectively. The following example demonstrates the concepts:

When you work with many symbolic functions, you should declare that your variables are symbolic.

Create a script file and type the following code:


syms x      %symbolic variable x
syms y      %symbolic variable x

% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))

% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))

When you run the file, it displays the following result:


ans =
x^2 + 4*x - 45

ans =
x^4 + x^3 - 43*x^2 + 23*x + 210

ans =
2*cos(x)*sin(x)

ans =
cos(x)*cos(y) - sin(x)*sin(y)

ans =
x^4 - 7*x^3

ans =
x^6 - 8*x^5 + 15*x^4



Sunday, 7 August 2016

MATLAB Programming 52 - 3D plots of functions


Three-Dimensional Plots


Three-dimensional plots basically display a surface defined by a function in two variables, g = f (x,y).
As before, to define g, we first create a set of (x,y) points over the domain of the function using the meshgrid command. Next, we assign the function itself. Finally, we use the surf command to create a surface plot.

The following example demonstrates the concept:


Use the peaks function to define XY, and Z as 25-by-25 matrices. Then, create a surface plot.



[X,Y,Z] = peaks(25);

figure
surf(X,Y,Z);


surf creates the surface plot from corresponding values in XY, and Z. If you do not define the color data C, then surf uses Z to determine the color, so color is proportional to surface height.




Friday, 5 August 2016

MATLAB Programming 51 - how to draw contour


A contour line of a function of two variables is a curve along which the function has a constant value. Contour lines are used for creating contour maps by joining points of equal elevation above a given level, such as mean sea level.

MATLAB provides a contour function for drawing contour maps.

Example


Let us generate a contour map that shows the contour lines for a given function g = f(x, y). This function has two variables. So, we will have to generate two independent variables, i.e., two data sets x and y. This is done by calling the meshgrid command.

The meshgrid command is used for generating a matrix of elements that give the range over x and y along with the specification of increment in each case.


Use the meshgrid function to generate matrices X and Y. Create a third matrix, Z, and plot its contours.



x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);

figure
contour(X,Y,Z)




MATLAB Programming 50 - bar charts (Example)

Set the bar interior color and outline color using RGB triplets. Set the width of the bar outline



y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'FaceColor',[0 .5 .5],'EdgeColor',[0 .9 .9],'LineWidth',1.5)


Create a bar graph with a three-column matrix input and return the three bar series objects. bar creates one bar series for each column in the matrix.


y = [2 4 6; 3 4 5];
b = bar(y);


Change properties for a specific bar series by indexing into the object array. For example, change properties of the bars representing the second column of y using b(2). Starting in R2014b, you can use dot notation to set properties. If you are using an earlier release, use the set function instead.


b(2).LineWidth = 2;
b(2).EdgeColor = 'red';




MATLAB Programming 50 - bar charts (Example)

Display one bar for each row of the matrix. The height of each bar is the sum of the elements in the row.



y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y,'stacked')



Create a figure with two subplots. In the upper subplot, plot a bar graph. In the lower subplot, plot a stacked bar graph of the same data.


y = [1 2 3; 4 5 6];
ax1 = subplot(2,1,1);
bar(ax1,y)

ax2 = subplot(2,1,2);
bar(ax2,y,'stacked')


Create a bar graph using red bars


y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'r')




MATLAB Programming 50 - bar charts (Example)

Specify the bar locations along the x-axis


x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)


Set the width of each bar to 40 percent of the total space available for each bar.


y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)




Display four groups of three bars


y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)




MATLAB Programming 50 - bar charts


Drawing Bar Charts


The bar command draws a two dimensional bar chart. Let us take up an example to demonstrate the idea.

Example


Let us have an imaginary classroom with 10 students. We know the percent of marks obtained by these students are 75, 58, 90, 87, 50, 85, 92, 75, 60 and 95. We will draw the bar chart for this data.


Create a script file and type the following code:


y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)


When you run the file, MATLAB displays the following bar chart:





Thursday, 4 August 2016

MATLAB Programming 49 - adding some functionality to graph (3)


Setting Colors on Graph


MATLAB provides eight basic color options for drawing graphs. The following table shows the colors and their codes:

w- White
k - Black
b - Blue
r - Red
c - Cyan
g - Green
m - Magenta
y - Yellow

Example


Plot three sine curves with a small phase shift between each line. Use a green line with no markers for the first sine curve. Use a blue dashed line with circle markers for the second sine curve. Use only cyan star markers for the third sine curve.



x = 0:pi/10:2*pi;
y1 = sin(x);
y2 = sin(x-0.25);
y3 = sin(x-0.5);

figure
plot(x,y1,'g',x,y2,'b--o',x,y3,'c*')




MATLAB Programming 49 - adding some functionality to graph (2)


Drawing Multiple Functions on the Same Graph


You can draw multiple graphs on the same plot. The following example demonstrates the concept:

Example


Create a script file and type the following code:


Define x as 100 linearly spaced values between $-2\pi$ and $2\pi$. Define y1 and y2 as sine and cosine values of x. Create a line plot of both sets of data.

x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);

figure
plot(x,y1,x,y2)


MATLAB Programming 49 - adding some functionality to graph (1)


Adding Title, Labels, Grid Lines, and Scaling on the Graph


MATLAB allows you to add title, labels along the x-axis and y-axis, grid lines and also to adjust the axes to spruce up the graph.

The xlabel and ylabel commands generate labels along x-axis and y-axis.

The title command allows you to put a title on the graph.

The grid on command allows you to put the grid lines on the graph.

The axis equal command allows generating the plot with the same scale factors and the spaces on
both axes.

The axis square command generates a square plot.



MATLAB Programming 48 - plot a graph


To plot the graph of a function, you need to take the following steps:


Define x, by specifying the range of values for the variable x, for which the function is to be plotted

Define the function, y = f(x)

Call the plot command, as plot(x, y)

Following example would demonstrate the concept.

Let us plot the simple function y = x for the range of values for x from 0 to 100, with an increment of 5.


Create a script file and type the following code:


x = [0:5:100];
y = x;
plot(x, y)

When you run the file, MATLAB displays the following plot:







Wednesday, 3 August 2016

MATLAB Programming 47 - comparison two strings


Comparing Strings


Create a script file and type the following code into it:


str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end

When you run the file, it displays the following result:


str1 =
This is test
str2 =
This is text
ans =
This is test and This is text are not equal


MATLAB Programming 46 - Array functions for flipping & rotations


Array Functions


MATLAB provides the following functions to sort, rotate, permute, reshape, or shift array contents. 


length - Length of vector or largest array dimension

ndims - Number of array dimensions

numel - Number of array elements

size - Array dimensions

iscolumn - Determines whether input is column vector

isempty - Determines whether array is empty

ismatrix - Determines whether input is matrix

isrow - Determines whether input is row vector

isscalar - Determines whether input is scalar

isvctore- Determines whether input is vector

blkdiag - Constructs block diagonal matrix from input arguments

circshift - Shifts array circularly

ctranspose - Complex conjugate transpose

diag - Diagonal matrices and diagonals of matrix

flipdim - Flips array along specified dimension

fliplr - Flips matrix from left to right

flipud - Flips matrix up to down

ipermute - Inverses permute dimensions of N-D array

permute - Rearranges dimensions of N-D array

repmat - Replicates and tile array

reshape - Reshapes array

rot90 - Rotates matrix 90 degrees

shiftdim - Shifts dimensions

issorted - Determines whether set elements are in sorted order

sort - Sorts array elements in ascending or descending order

sortrows - Sorts rows in ascending order

squeeze - Removes singleton dimensions

transpose - Transpose

vectorize - Vectorizes expression


MATLAB Programming 45 - Array functions for dimentions


Length, Dimension and Number of elements:


Create a script file and type the following code into it:


x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s

When you run the file, it displays the following result:


ans =
8

ans =
4

ans =
23

Circular Shifting of the Array Elements:


Create a script file and type the following code into it:


a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.

When you run the file, it displays the following result:


a =
1 2 3
4 5 6
7 8 9

b =
7 8 9
1 2 3
4 5 6

c =
8 9 7
2 3 1
5 6 4


Monday, 1 August 2016

MATLAB Programming 44 - Colon Notation (Example)


Example


Create a script file and type the following code in it:


A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2) % second column of A
A(:,2:3) % second and third column of A
A(2:3,2:3) % second and third rows and second and third columns

When you run the file, it displays the following result:


A =
1 2 3 4
4 5 6 7
7 8 9 10

ans =
2
5
8

ans =
2 3
5 6
8 9

ans =
5 6
8 9

MATLAB Programming 44 - Colon Notation (2)


You can use the colon operator to create a vector of indices to select rows, columns or elements of arrays.

The following table describes its use for this purpose (let us have a matrix A): 


A(:,j) - is the jth column of A.

A(i,:) - is the ith row of A.

A(:,:) - is the equivalent two-dimensional array. For matrices this is the same as A.

A(j:k) - is A(j), A(j+1),...,A(k).

A(:,j:k) - is A(:,j), A(:,j+1),...,A(:,k).

A(:,:,k) - is the kth page of three-dimensional array A.

A(i,j,k,:) - is a vector in four-dimensional array A. The vector includes A(i,j,k,1), A(i,j,k,2), A(i,j,k,3), and so on.

A(:) - is all the elements of A, regarded as a single column. On the left side of an assignment statement, A(:) fills A, preserving its shape from before. In this case, the right side must contain the same number of elements as A.


MATLAB Programming 44 - Colon Notation (1)


Colon Notation


The colon(:) is one of the most useful operator in MATLAB. It is used to create vectors, subscript arrays, and specify for iterations.

If you want to create a row vector, containing integers from 1 to 10, you write:


1:10

MATLAB executes the statement and returns a row vector containing the integers from 1 to 10:


ans =
1 2 3 4 5 6 7 8 9 10

If you want to specify an increment value other than one, for example:


100: -5: 50


MATLAB executes the statement and returns the following result:


ans =
100 95 90 85 80 75 70 65 60 55 50

Let us take another example:


0:pi/8:pi

MATLAB executes the statement and returns the following result:


ans =
Columns 1 through 7
0 0.3927 0.7854 1.1781 1.5708 1.9635 2.3562
Columns 8 through 9
2.7489 3.1416



MATLAB Programming 43 - Sorting of arrays


Sorting Arrays


Create a script file and type the following code into it:


v = [ 23 45 12 9 5 0 19 17]      % horizonal vector
sort(v)      %sorting v
m = [2 6 4; 5 3 9; 2 0 1]      % two dimensional array
sort(m, 1)      % sorting m along the row
sort(m, 2)      % sorting m along the column

When you run the file, it displays the following result:


v =
23 45 12 9 5 0 19 17

ans =
0 5 9 12 17 19 23 45

m =
2 6 4
5 3 9
2 0 1

ans =
2 0 1
2 3 4
5 6 9

ans =
2 4 6
3 5 9
0 1 2