-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Introduction To Scilab Programming
What are the main differences between Scilab and MATLAB?
Program Structure, Functions, and Syntax
Very closely paralleled Most structure and functions
identical
o xlabel and ylabel functions in this example are identical some
functions with same name but different results
o the axis function shown in the MATLAB code will produce in
Scilab, if proper arguments are provided, draw an axis in the
output window independent of the rest of the figure
some functions with identical results but different name or
syntax o note the difference in comment lines o hist and histplot
are notable in the examples shown
Matlab Code:
Scilab Code:
Layout and Workspaces
Very functionally similar MATLAB has a layout more like the most
recent versions of MS Office (icons
with explanatory text beneath) while Scilab has the icons alone
with explanatory text available by hovering the mouse.
Same sub-windows o file browser o command window
o variable workspace o command history
a Both can dock and undock all sub-windows in the main
window
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Editor Window Toolbars
Differences and similarities parallel from the main workspaces o
icons with text as opposed to icons with hover text
Toolbar design different in style, but provides similar
functionality o MATLAB has functionality available through
different tabs in the toolbar o Scilab has more of the
functionality available through drop-down menus
Graphing: function plots
While syntax is slightly different between MATLAB and Scilab,
function plots that are essentially the same can be produced
Significant difference: o MATLAB will clear the plot if another
plot command is given o multiple functions on the same axis must be
done in the same statement or
the hold plot function must be used o allows easy, smooth
animation of plots: simply use another plot statement
to create the next frame o Scilab plots do not clear unless a
clear command is given o multiple functions on the same axis are
easy o smooth animation is harder and has so far remained
elusive
Matlab Plot
Scilab Plot
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Graphing: Histograms
Note: differences in the profile of the two histograms results
from the fact that they are both generated from a random process
and any two histograms from the same program would look a bit
different
o code producing these plots is the code shown in an earlier
slide Differences in appearance that dont affect functionality
o color and tick marks Functions in each program are
significantly different
o MATLAB hist function puts the data first in the statement,
followed by the number of bins
o Scilab histplot function puts the number of bins first,
followed by the data o Scilab also defaults to a normalized
histogram o If a non-normalized histogram is desired, an argument
must be provided in
the histplot function to specify this.
Matlab Histogram
Scilab Histogram
Major Differences
Cost and accessibility: o MATLAB is paid software with
proprietary code o Scilab is free and open source
more accessible may be less support, especially for add-on
modules
Plot clearing: o MATLAB clears one plot automatically when
another one is plotted o Scilab leaves all plots on the same axis
unless cleared
GUIs o MATLAB comes standard with a GUI builder, GUIDE, built in
o Scilab comes with a GUI, Guide
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Functions
Functions in Scilab are NOT Matlab m-files but variables. One or
several functions can be defined in a single file (say myfile.sci).
The name of of the file is not necessarily related to the the name
of the functions. The name of the function(s) is given by
function [y]=fct1(x) ... function [y]=fct2(x) ...
The function(s) are not automatically loaded into Scilab.
Usually you have to execute the command getf("myfile.sci") before
using it. Functions can also be defined on-line (or inside
functions) by the command deff. To execute a script file you must
use exec("filename") in Scilab and in Matlab you just need to type
the name of the file.
Comment lines
Scilab comments begins with: // Matlab comments begins with:
%
Variables
Predefined variables usually have the % prefix in Scilab (%i,
%inf, ...). They are write protected.
Strings
Strings are considered as 1 by 1 matrices of strings in Scilab.
Each entry of a string matrix has its own length.
Boolean variables
Boolean variables are %T, %F in Scilab and 0, 1 in Matlab.
Indexing with boolean variables may not produce same result.
Example:
x=[1,2];x([1,1]) [which is NOT x([%T,%T])] returns [1,1] in
Scilab and [1,2] in Matlab.
Also if x is a matrix x(1:n,1)=[] or x(:)=[] is not valid in
Matlab.
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Polynomials
Polynomials and polynomial matrices are defined by the function
poly in Scilab (built-in variables). They are considered as vectors
of coefficients in Matlab.
Empty matrices
[ ]+1 returns 1 in Scilab and [ ] in Matlab.
Plotting
Except for the simple plot and mesh (plot3d) function plots,
Scilab and Matlab are not compatible.
Scicos
Scicos (Scilab) and Simulink (Matlab) are not compatible.
Built-in-functions
Most built in functions are identical in Matlab and Scilab. Some
of them have a slightly
different syntax. Here is a brief, partial list of commands with
significant different syntax.
Matlab Scilab all and any or balance balanc cputime timer echo
mode eig Spec or bdiag eval evstr exist exists + type fopen mopen
fwrite mwrite fclose mclose feof ferror feval evstr and strcat
filter rtitr finite x < %inf fread read
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
fseek file ftell global home isglobal isinf(a) a == %inf
isnan(a) a ~= a isstr(a) type(a) == 10 lookfor apropos pause halt
randn rand setstr code2str srcmp(a,b) a == b which whereis nargin
[nargout, nargin]=argn(0) nargout uimenu getvalue
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Scilab Exercises
Basic Commands
help Purpose = to get the list of help topics
clock Purpose = to show date in vector form ans = 2014. 2. 23.
10. 22. 20.000001
date Purpose = to show date in string form Ans= 29-Oct-2014
ver Purpose = to show current version of Scilab Ans = Scilab
Version: 5.5.1.1412169962
pwd Purpose = to show the present working directory Ans =
C:\Users\dell\Documents
cd Purpose = to change the directory
dir Purpose = to display the name of all files and folder in the
present directory Ans = AppData\ Application Data\ Contacts\
Cookies\ Desktop\ Documents\ Downloads\
ls Purpose = to display the name of all files and folder in the
current directory Ans = !My Videos ! ! ! !My Pictures ! ! !
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
!My Music ! ! !
mkdir Purpose = to create a new directory
who Purpose = to list all the variables in workspace Ans = Your
variables are: Ans
whos Purpose = to display the information of all the variables
Ans = Name Size Bytes Class Attributes Ans 1X58 116 char
what Purpose = Lists low level primitives and commands. Ans =
Internal Functions: !!_invoke_ %H5Object_e %H5Object_fieldnames
%H5Object_p Commands: abort apropos break case
clear Purpose = to clear all variables
clc Purpose = to clear all the commands in the workspace
clf Purpose = to clear the figure window
quit Purpose = to exit the scilab
exit Purpose = to exit the scilab
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Evaluating the Expressions
1. x3+5x2-2.67x-52 , when x=13.5
2. ((14x3)1/2)/e3x , when x=13.5
3. log|x2-x3| , when x=13.5
4. [37 log(76)/(73+546)] + (910)1/3
5. Prove LHS=RHS when x=/5
a. Cos2(x/2) = tanx+sinx/2tanx
Solution:
x3+5x2-2.67x-52
-->x=13.5
-->x^3+5*(x^2)-2.67*x-52
Output = 3283.58
((14x3)1/2)/e3x
-->x=13.5
-->(sqrt(14*(x^3)))/exp(3*x)
Output = 4.782D-16
Note: The above output contains D. To Remove that we change the
output format.
--> format(25)
-->(sqrt(14*(x^3)))/exp(3*x)
Output = 0.0000000000000004782315
log|x2-y3|
-->x=13.5
-->log(abs((x^2)-(x^3)))
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Output = 7.7311080151970230645020
-->[(37 log(76))/(73+546)] + (910)1/3
(((3^7)*log(76))/((7^3)+546))+(nthroot(910,3))
Output = 20.3444
Prove LHS=RHS when x=/5
Cos2(x/2) = tanx+sinx/2tanx
LHS
-->cos2(x/2)
(cos(x/2))^2
Output = 0.9045
RHS
-->tanx+sinx/2tanx
(tan(x)+sin(x))/(2*tan(x))
Output = 0.9045
Thus, LHS=RHS
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Polynomial evaluation
Q1) f(x) = x5-12.1 x4+40.59 x3-17.015 x2-71.95 x+35.88,
Calculate f(9) and roots of this equation.
Q2) Perform the polynomial multiplication and addition for the
given two polynomial
f1(x) = 3 x6+15 x4-10 x3-3 x2+15 x-40
f2(x) = 3 x3-2 x-6
Q3) Divide the polynomial 4 x4+6 x3-2 x2-5 x-3 by x2+4x+2
Basic Operations:
--> p = poly([2, 3], x) Or --> p = poly([2, 3], x, r)
Note: r indicates that the first argument array are the roots of
the second argument. If the third argument
is not present, it defaults to 'r', as in the first
statement.
=> p = 6 - 5x + x2
--> p1 = poly([6, -5, 1], x, c)
Note: c indicates that the first argument array are the
coefficients of the second argument.
=> p1 = 6 -5x + x2
1. coeff(p) returns a row vector containing the coefficients of
the polynomial.
2. roots(p) returns a column vector containing the roots of the
polynomial.
3. varn(p) returns the variable of a polynomial.
4. companion(p) returns the companion matrix (a matrix whose
characteristic equation is the given
polynomial) of the polynomial
5. derivat(p) returns a polynomial which is the derivative of
p
6. typeof(p) returns the type of the variable. In this case, it
will return the type as polynomial
Function horner() evaluates the polynomial for the given
value/values of the independent variable. If the
input is a single number, polynomial is evaluated for that value
of the independent variable. If the input is
a vector, polynomial is evaluated at each value in the vector,
and returns a vector as the result.
-->horner(p, 2)
ans =
0.
-->horner(p, [2, 3])
ans = `
0. 0.
-->horner(p, 4)
ans =
2.
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Solutions:
Ans Q1)
Code:
-->P = poly([35.88 -71.95 -17.015 40.59 -12.1 1], 'x',
'c')
P = 35.88 - 71.95x - 17.015x2 + 40.59x3 - 12.1x4 + x5
-->horner(P,9)
ans = 7261.125
-->roots(P)
ans =
6.5
4.
2.3
- 1.2
0.5
Ans Q2)
Code:
-->P = [-40 15 -3 -10 15 3]
-->Q = [-6 -2 0 3]
-->P+Q
-->P*Q
Output:
-->P = poly([-40 15 -3 -10 15 3],'x','c')
P = - 40 + 15x - 3x2 - 10x3 + 15x4 + 3x5
-->Q = poly([-6 -2 0 3],'x','c')
Q = - 6 - 2x + 3x3
-->P + Q
ans = - 46 + 13x - 3x2 - 7x3 + 15x4 + 3x5
-->P * Q
ans = 240 - 10x - 12x2 - 54x3 - 25x4 - 57x5- 36x6 + 45x7 +
9x8
Ans Q3)
Code:
P = poly([-3 -5 -2 6 4],x,c)
Q = poly([2 4 1], x, c]
Output:
P = 4 6 -2 -5 3
Q = 1 4 2
D = 4 -10 30
R= 0 0 0 -105 -57
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Programming using control structures
Q1) Display the grade of a student using if-else statement
a >80 - Distinction
a < 80 and a > 60 - First Class
a < 60 and a > 45 - Second Class
a < 45 - Fail
Q2) Find if the given number is odd or even using if-else
structure.
Q3) To find the body mass index (BMI) by using height and
weight.
BMI = weight/(height)2
Weight (KG)
Height (Meters)
BMI 18.5 and 25 and 30 = obese
Solution:
Ans 1) Code:
disp("Display the grade of the student "); a = input("Enter
Marks: "); if a >=80 disp("Distinction"); elseif(a>=60 &
a=45 & a
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
disp ("Odd"); end; Output: Check whether the input number is odd
or even Enter a number: 56 Even Enter a number: 3 Odd Ans 3)
Code:
disp("Calculating BMI") w = input ("Enter Weight: ") h = input
("Enter Height: ") r=w/(h^2); mprintf("The BMI is: %d", r) if(r
18.5 & r < 24.9) disp ("Normal") elseif(r > 25 & r
< 29.5) disp("Overweight") else disp("Obese") end Output:
Calculating BMI Enter weight: 50 Enter height: 1.5 The BMI is:
22.222 Normal Calculating BMI Enter weight: 75 Enter height: 1.1
The BMI is: 61.9835 Obese
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
For, While and Switch statements
Q1) Find the sum of N natural numbers using FOR loop. Q2) Find
the sum of odd numbers using WHILE loop. Q3) implement string
functions such as length and compare to upper and lower case using
switch case. Solution:
Ans 1)
Code:
sum =0 n=input("Enter the number of numbers: ") for i = 1:1:n
sum = sum+i end mprintf("The sum of first %d natural numbers is
%d",n,sum)
Output:
Enter the number of numbers: 10
The sum of first 10 natural numbers is 55
Ans 2)
Code:
sum =0 n=input("Enter the number of numbers: ") i=1 while i
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
case 2 disp (strcmp(a,b)); case 3 disp (convstr(a,'l')); disp
(convstr(b,'l')); case 4 disp (convstr(a,'u')); disp
(convstr(b,'u')); else disp ('Wrong Choice'); end;
Output:
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 1
5.
3.
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 2
- 1.
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 3
hello
hai
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 3
hello
hai
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 4
HELLO
HAI
1 for length
2 to compare
3 to apply lower case
4 to apply upper case
Enter any number: 7
Wrong Choice
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
File Operations
Q1) Open a text file in Scilab.
Q2) Writing information WELCOME into a file and read that
file.
Q3) Copy and close the file.
Solutions:
Ans 1)
Code:
--> fid = mopen('test.txt', 'w')
fid =
1.
Ans 2)
Code:
fid = mopen(test.txt, w);
mfprintf(fid,hello %s %d.\n,world,1);
mclose(fid);
f1 = mopen(test.txt,r);
mfscanf (f1, %s %s)
Output:
ans = !hello world !
Ans 3)
Code:
copyfile test.txt test2.txt
fid = fopen (test2.txt, r);
mfscanf (fid, %s %s)
Output:
ans = !hello world !
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Matrix Arithmetic Operations 1) Perform the arithmetic
operations for the given 3X3 matrix
A+B, A-B, A*B, det(A), det(B) A = 3 11 6 4 7 10 13 9 0 B = 4 6 8
3 5 7 6 9 12 2) A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 i. Form a matrix B
from the first, third and fourth rows and the first, third, fourth
and seventh column of the matrix A. ii. Create a matrix C with 17
elements long row vector from matrix A from the elements of the
third row, the fifth & seventh column.
Solutions:
Ans 1)
Code:
-->A = [ 3 11 6 ; 4 7 10 ; 13 9 0 ]
-->B = [ 4 6 8 ; 3 5 7 ; 6 9 12 ]
-->C = A+B
-->D = A-B
-->E = A*B
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
-->F = det (A)
-->G = det (B)
Output: A = 3 11 6 4 7 10 13 9 0 B = 4 6 8 3 5 7 6 9 12 C = 7 17
14 7 12 17 19 18 12 D = -1 5 -2 1 2 -3 7 0 -12 E = 81 127 173 97
149 201 79 123 167 F = 830 G = 0.0000000000000006661338 Ans 2)
Code: A = [ 1:7 ; 2:2:14 ; 21:-3:3 ; 5:5:35 ] a = A (1, :) b = A
(3:4, :) c = [a;b] d = c (:,1) e = c (:,3:4) f = c (:,7) B = [ d e
f ] g = A (3,:) h = A (:,5) I = A (:,7) h=h i=I U = [ g h i]
Output: A = a = 1 2 3 4 5 6 7
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
b = 21 18 15 12 9 6 3 5 10 15 20 25 30 35 c =
21 18 15 12 9 6 3 5 10 15 20 25 30 35 d = 1 21 5 e = 3 4 15 12
15 20 f = 7 3 35 B = 1 3 4 7 21 15 12 3 5 15 20 25 g = 21 18 15 12
9 6 3 h = 5 10 9 25 I = 7 14 3 35 h = 5 10 9 25 I = 7 14 3 35 U =
21 18 15 12 9 6 3 5 10 9 25 7 143 35
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Rule of matrix
From the matrix A, B and C
A = 5 2 4
1 7 -3
6 -10 0
B = 11 5 -3
0 -12 4
2 6 1
C = 7 14 1
10 3 -2
8 -5 9
Q1) Calculate A+B and B+A, to show that addition of matrix is
commutative.
Q2) Calculate A(A+B) and (A+B)+C, to show that addition of
matrix is associative.
Q3) Calculate A*(B+C) and A*B+A*C, to show that multiplication
of matrix is multiplication.
Solutions:
A = [ 5 2 4 ; 1 7 -3 ; 6 -10 0]
B = [ 11 5 -3 ; 0 -12 4 ; 2 6 1]
C = [ 7 14 1 ; 10 3 -2 ; 8 -5 9]
Ans 1)
Code:
X=A+B
Y=B+A
Output:
X =
Y =
Hence, A+B = B+A
Ans 2)
Code:
X=A+(B+C)
X=A+(B+C)
Output:
X =
Y =
Hence, A(A+B) = (A+B)+C
Ans 3)
Code:
X=A*(B+C)
Y=A*B+A*C
Output:
X =
Y =
Hence, A*(B+C) = A*B+A*C
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
2D plots
Year 2008 2009 2010 2011 2012
Placement 65 72 74 76 84
Q1) Plot the graph for the table with dashed dotted red lines,
marker type diamond, marker edge color
green, marker size = 12 and label the graph along with grid and
box. Also plot the bar chart and pie diagram
for the data.
Solutions:
Ans 1)
Code:
-->year = [ 2008,2009,2010,2011,2012 ]
-->placement = [ 65,72,74,76,84 ]
-->plot
(year,placement,'rd-','markeredgecolor','g','markersize',12);
-->title('2D PLOTS and PRINTING LABELS');
-
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Department of Computer Science and Engineering, SRM University,
Kattankulathur
Bar chart and pie chart
Q1) Write a Scilab program to get 5 subjects for 5 members of
student and calculate the average and draw
the bar chart and pie chart for individual students
performance.
Solution:
Ans 1)
Code:
S1 = [30 35 48 36 40];
S2 = [32 33 25 12 27];
S3 = [4 0 16 5 1];
S4 = [47 49 48 45 50];
S5 = [27 18 39 34 30];
a = sum(S1)/5;
b = sum(S2)/5;
c = sum(S3)/5;
d = sum(S4)/5;
e = sum(S5)/5;
S = [a b c d e];
bar (S,'y');
pie (S);