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)
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 X, Y, 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 X, Y, 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.
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)
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.
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.
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.
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
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:
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
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.
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:
In this section, we will discuss some functions that create some special arrays. For all these functions, a single argument creates a square array, double arguments create rectangular array.
The zeros() function creates an array of all zeros:
For example:
zeros(5)
MATLAB will execute the above statement and return the following result:
v = [1: 2: 20]; sv = v.* v; %the vector with elements % as square of v's elements dp = sum(sv); % sum of squares -- the dot product mag = sqrt(dp); % magnitude disp('Magnitude:'); disp(mag);
When you run the file, it displays the following result:
Magnitude of a vector v with elements v1, v2, v3, …, vn, is given by the equation:
|v| = √(v12 + v22 + v32 + … + vn2)
You need to take the following steps to calculate the magnitude of a vector:
Take the product of the vector with itself, using array multiplication (.*). This produces a vector sv, whose elements are squares of the elements of vector v.
sv = v.*v;
Use the sum function to get the sum of squares of elements of vector v. This is also called the dot product of vector v.
dp= sum(sv);
Use the sqrt function to get the square root of the sum which is also the magnitude of the vector v.
MATLAB allows you to append vectors together to create new vectors.
If you have two row vectors r1 and r2 with n and m number of elements, to create a row vector r of n plus m elements, by appending these vectors, you write:
r = [r1,r2]
You can also create a matrix r by appending these two vectors, the vector r2, will be the second row of the matrix:
r = [r1;r2]
However, to do this, both the vectors should have same number of elements.
Similarly, you can append two column vectors c1 and c2 with n and m number of elements. To create a column vector c of n plus m elements, by appending these vectors, you write:
c = [c1; c2]
You can also create a matrix c by appending these two vectors; the vector c2 will be the second column of the matrix:
c = [c1, c2]
However, to do this, both the vectors should have same number of elements.
When you multiply a vector by a number, this is called the scalar multiplication. Scalar multiplication produces a new vector of same type with each element of the original vector multiplied by the number.
Example
Create a script file with the following code:
v = [ 12 34 10 8]; m = 5 * v
When you run the file, it displays the following result:
m = 60 170 50 40
Please note that you can perform all scalar operations on vectors. For example, you can add, subtract and divide a vector with a scalar quantity.
You can reference one or more of the elements of a vector in several ways. The ith component of a vector v is referred as v(i).
For example:
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements v(3)
MATLAB will execute the above statement and return the following result:
ans = 3
When you reference a vector with a colon, such as v(:), all the components of the vector are listed.
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements v(:)
MATLAB will execute the above statement and return the following result:
ans = 1 2 3 4 5 6
MATLAB allows you to select a range of elements from a vector.
For example, let us create a row vector rv of 9 elements, then we will reference the elements 3 to 7 by writing rv(3:7) and create a new vector named sub_rv.
rv = [1 2 3 4 5 6 7 8 9]; sub_rv = rv(3:7)
MATLAB will execute the above statement and return the following result:
The continue statement is used for passing control to next iteration of for or while loop.
The continue statement in MATLAB works somewhat like the break statement. Instead of forcing termination, however, 'continue' forces the next iteration of the loop to take place, skipping any code in between.
Loop control statements change execution from its normal sequence. When execution leaves a scope, all automatic objects that were created in that scope are destroyed.
MATLAB supports the following control statements. Click the following links to check their detail.
break statement - Terminates the loop statement and transfers execution to the statement immediately following the loop.
continue statement - Causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.
Let us use a nested for loop to display all the prime numbers from 1 to 100.
Create a script file and type the following code:
for i=2:100 for j=2:100 if(~mod(i,j)) break; % if factor found, not prime end end if(j > (i/j)) fprintf('%d is prime\n', i); end end
When you run the file, it displays the following result:
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime