[go: up one dir, main page]

0% found this document useful (0 votes)
54 views38 pages

3 Vectors and Matrices

MATLAB allows users to work with vectors and matrices. Vectors are 1xN or Nx1 matrices, while matrices can have multiple rows and columns. Users can perform operations on vectors and matrices such as addition, subtraction, multiplication, and more. Special matrices like zeros, ones, and eye matrices can be generated. Multidimensional arrays can also be created and manipulated in MATLAB.

Uploaded by

Oreste Hernandez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views38 pages

3 Vectors and Matrices

MATLAB allows users to work with vectors and matrices. Vectors are 1xN or Nx1 matrices, while matrices can have multiple rows and columns. Users can perform operations on vectors and matrices such as addition, subtraction, multiplication, and more. Special matrices like zeros, ones, and eye matrices can be generated. Multidimensional arrays can also be created and manipulated in MATLAB.

Uploaded by

Oreste Hernandez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

MATLAB

Vectors & Matrices


Introduction
 In MATLAB, matrix is chosen as a basic data element

 Vector:
Matrix of 1xn or nx1 is know as vector.

row vector column vector


>>p=[1 2 3]; % data assignment for row vector
or
>>p=[1,2,3] ;

>>q=[1;2;3]; %data assignment for column vector


or
>>q=[1
2
3];
Working with vectors
 Scalar:
• Matrix of 1x1
• >>r=3; %data assignment for scalar

 In MATLAB it is possible to work with the complete matrix simultaneously.

• Vector Product
• >>x=[3;4;5]; %column vector of 3x1
• >>y=[1 2 0]; %row vector of 1x3
• >>z=y*x
Z=11 %scalor
>>z=x*y %matrix of 3x3
z= 3 6 0
4 8 0
5 10 0
Working with vectors
Vector transpose
>>xt=x’ % transpose of x
>>xt= 3 4 5
>>yt=y’
yt= 1
2
0
Creating Evenly spaced row vector
>>a=1:2:11 %staring from 1 with an increment of 2 and upto 11
a=

1 3 5 7 9 11
Working with vectors
• Exercise
– >>t=12.5:-2.5:0
– >>t=11:1:5
– >>t=1:20
• Linspace command
– >>a=Linspace(0,10,5)
%linspace(x1,x2,n) , n equally spaced elements
starting from x1 end with x2
– >>a=logspace(0,4,3)
– %logspace(a,b,n), logarithmically spaced vector of
length n in the interval 10a to 10b
Working with vectors
• Exercise
• >>x=[1 4 11 100];
• >>y=[14;200; -100];
• >>z=[1.4 10.7 -1.1 20.9];
• Try this
• sum(x) %sum of all elements of row or column vector
• mean(x) %ave of all elements of row or column vector
• Max(x)
• Min(x)
• Prod(x) %product of all elements of row or column vector
• Sign(x) %return +1 if sign of element is +ve
0 if element is zero
-1 if sign of element is -ve
• Find(x) %returns the linear indices corresponding to non-zero
entries of the array x
>>a=find(x)
a= 1 2 3 4
%1st , 2nd, 3rd, & 4th, elements are non zeros
>>a=find(y>24)
a= 2 %2nd element of y has value > 24
• Fix (z) %rounds the elements of a vector z to nearest integers
towards zero.
• Floor(z) %rounds the elements of a vector z to nearest integers
towards –infinity
• Ceil (z) %rounds the elements of a vector z to nearest intergers
towards +infinity
• Round(x) %rounds the elements to nearest integer
• Sort(x, ‘mode’) %for sorting, mode=ascend or descend, default is
ascend.
– >>x1=[5 -3 10 -10];
– >>a=sort(x1)
– >>a= -10 -3 5 10
– >>b=sort(x1, ‘descend’)
– >>b = 10 5 -3 10
• Mod(x,y) %Modulus after division
• Rem(x,y) %Remainder after division
Working with Matrices
• Entering data in matrices
– >>A=[1 10 20; 2 5 6;7 8 9]
– >>B=[1+2i 3i; 4+4i 5] % i or j
– >>C=[1 -2; sqrt(3) exp(1)]
• Line continuation: sometimes it is not possible to type data input on the
same line
– >>A=[1 10 20; 2 5 6;7 8 9] %semi column to separate rows
– >>A=[1 10 20 %Enter key or carriage return
2 5 6
7 8 9]
– >>A=[1, 10, 20; 2, 5,… %ellipsis(3 dots …) method
6;7, 8, 9]
Working with Matrices
• Sub-matrices
– >>B=A(1:2,2:3) %row 1 to 2 & column 2 to 3
– >>B= 1020
5 6
– >>B= A(:, 2:3) %all row & column 2 to 3
– >>B=A(:, end) %end=> last column (or row)

• Size of matrix
– >>[m, n]=size(A)
Multidimensional Arrays\Matrices
• Creating multidimensional arrays: Consider a book, line no & column no
represents two dimensions and third dimension is page no.
Three methods
– 1. Extending matrix of lower dimension
– 2. Using MATLAB function
– 3. Using ‘cat’ function
Multidimensional Arrays\Matrices
• 1 Extending matrix dimension
– >>A=[1 2 3; 5 4 3; 1 3 6];
– >>B=[2 4 6; 1 3 6; 3 6 9];
– >>A(:,:,2)=B
– A(:,:,1) =
1 2 3
5 4 3
1 3 6
A(:,:,2) =
2 4 6
1 3 6
3 6 9
Multidimensional Arrays\
Matrices
• 2. Using MATLAB functions
– >>B=randn(4, 3, 2) %random no multidimensional matrix
B(:,:,1) = %similarly ‘ones’ & ‘zeros’ function
0.5377 0.3188 3.5784
1.8339 -1.3077 2.7694
-2.2588 -0.4336 -1.3499
0.8622 0.3426 3.0349
B(:,:,2) =
0.7254 -0.1241 0.6715
-0.0631 1.4897 -1.2075
0.7147 1.4090 0.7172
-0.2050 1.4172 1.6302
Multidimensional Arrays\Matrices
• 3. Using ‘cat’ function: concatenates a list of array
– >>A1=[1 3; 6 9];
– >>B1=[3 3; 9 9];
– >>B=cat(2, A1, B1)
B=
1 3 3 3
6 9 9 9
 Working with multidimensional arrays: Most of the concepts are similar to
two dimensional arrays
Matrix Manipulations
• Reshaping matrix into a vector
– >>A=[1 10 20; 2 5 6; 7 8 9]
– >>B=A(:) %converts to column matrix
B=
1
2
7
10
5
8
20
6
9
Matrix Manipulations
• Reshaping a matrix into different sized matrix
>>A=[1 2 3 4; 5 6 7 8; 9 10 11 12] % A is 3x4 matrix
>>B=reshape(A, 6,2) % reshaped matrix B is 6x2
B=
1 3
5 7
9 11
2 4
6 8
10 12

Note: total no of elements 3x4=6x2=12 must be same


Matrix Manipulations
• Expanding matrix size
>>D(2,2)=10 %D is 2x2 with last element D(2,2)=10
D=
0 0
0 10
>>D(2,1:2)=[3 4] %D is 2x2 with element D(2,1)=3 & D(2,2)=4
D=
0 0
3 4
>>A=[6 7; 8 9]; %A is 2x2 matrix
>>A(2,3)=15 %Now A is changed to 2x3 matrix
A=
6 7 0
8 9 15
Matrix Manipulations
• Appending/Deleting a row/column to a matrix
>>A=[6 7; 8 9];
>>x=[1; 2]; %Column vector
>>y=[3 4]; %Row vector
>>B=[A x] %Appending a column ‘x’
B=
6 7 1
8 9 2
>>C=[A; y] %Appending a row ‘y’
C=
6 7
8 9
3 4
Matrix Manipulations
>>C(2,:)=[ ] %delete 2nd row of matrix C
C=
6 7
3 4
>>B(:,1:2)=[ ] %delete 1st to 2nd column of matrix B
B=
1
2

Note: Deletion of single element is not allowed, we can replace it.


Matrix Manipulations
Concatenation of matrices
>>A=[1 2; 3 4];
>>B=[A A+12; A+24 A+10]
B=
1 2 13 14
3 4 15 16
25 26 11 12
27 28 13 14
Generation of special Matrices
Try this
>>A=zeros(2,3)

>>B=ones(3,4)

>>C=eye(3,2) %1s in main diagonal rest elements will be zero

>>D=rand(3) %3x3 matrix with random no b/w 0 to1

>>E=rands(3) %3x3 matrix with random no b/w --1 to1

>>V=vander(v) %Vandermode matrix, V whose columns are powers of


the vector v. Let v=[1 2 3]. Here 3 elements => V
is 3x3

Note: zeros(3,3) may be written as zeros(3) and so the others also.


Generation of special Matrices
>>d=[2 3 4 5]; %Note ‘d’ may be row/column vector
>>A=diag(d) %diagonal of A (4x4) will be 2,3,4,5 and rest ‘0’
A =2 0 0 0
0 3 0 0
0 0 4 0
0 0 0 5
>>B=diag(d,1) %1st upper diagonal elements are vector d
A=
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
0 0 0 0 0

>>C=diag(d,-1) %1st lower diagonal elements are vector d


Generation of special Matrices

>>x=[1 2 3; 4 5 6;7 8 9]; %Note x is a 3x3 matrix now


>>A=diag(x) %will give you the diagonal elements
A=
1
5
9

Note: diag(x,1)=>1st upper diagonal elements


diag(x,-1)=>1st lower diagonal elements
Some useful commands for matrices
• >>A=[1 2; 0 4];
• >>det(A)%determinant of A
• >>rank(A) %rank of A
• >>trace(A) %sum of diagonal elements
• >>inv(A) %inverse of A
• >>norm(A) %Euclidean norm of A
• >>A’ %transpose of A
• >>x=A\b %left division
• >>poly(A) %coefficients of characteristic equation i.e (sI-A)
• >>eig(A) %gives eign values of A
• >>[v,x]=eig(A) %returns v=eign vector & x=eign values
• >>B=orth(A) %B will be orthogonal to A i.e. B’=B-1
• >>Find(A) %returns indices of non-zeros elements
• >>sort(A) %sort each column in ascending order
Matrix and Array Operation
• Arithmetic operation on Matrix
>>A=[5 10; 15 20];
>>B=[2 4; 6 8];
Try these
>>C=A+B %or C=plus(A,B) addition
>>D=A-B %or D=minus(A,B) Subtraction
>>E=A*B %Multiplication
>>F=A^2 %Power
>>G=A/B %Right Division
>>H=A\B %Left Division

Example: Solve A.x=B where A=[2 4; 5 2] & B=[6;15]


Sol: x=A-1B=A\B
Matrix and Array Operation
• Arithmetic operation on Arrays (Element by Element Operation)
>>A=[5 10; 15 20];
>>B=[2 4; 6 8];
Try these
Note: 1. Addition and subtraction are same
2. No of Rows and Columns of two matrices must be same
>>E=A.*B % Element by Element Multiplication
>>F=A.^2 % Element by Element Power
>>G=A./B % Element by Element Right Division
>>H=A.\B % Element by Element Left Division
Rational Operators
• < Less than
• <= Less than equal to
• > Greater than
• >= Greater than equal to
• == Equal to
• ~= Not equal to

• Note: true =1; false =0, try: >>6>5 on MATLAB command window
Logical Operators
• & Logical AND
• | Logical OR
• ~ Logical NOT, complements every element of an array
• xor Logical exclusive-OR
• Try these
>>x=[2 3 4];
>>y=[2 5 1];
>>x&y
>>x|y
>>m=~x % complements every element of an array
>>m=xor(x,y)

• Note: true =1; false =0, try >>6>5 on matlab command window
Function with array inputs
• If input to a function is an array then function is calculated element-by-
element basis.

• Try this
• >>x=[0, pi/2,pi];
• >>y=sin(x)
• y=
0 1.0000 0.0000
• >>z=cos(x)
• z=
1.0000 0.0000 -1.0000
• Structure:
Structure Arrays
I. Collection of different kinds of data(text, number, numeric array etc), unlike
array which contain elements of same data type.
II. Again this is 1x1 structure array
• Try this
>>student.name=‘Kalpana Rawat’
>>student.rollno=44
>>student.marks=[45 33 15 18 0]
>>student
student =
name: 'Kalpana Rawat'
marks: [45 33 15 18 0]
rollno: 44
Note: Here student is structure name & name, rollno, marks are field name
Structure Arrays
Student is a 1x1 structure array having 3 fields. To increase the size of structure
array define the second structure element of the array as

>>student(2).name=‘Kuldeep Rawat’;
>>student(2).rollno=57;
>>student(2).marks=[4 13 35 36 9];
>>student
student =
1x2 struct array with fields:
name
marks
rollno

Note: Here structure student will show you only field names
not filed values
Structure Arrays
• Struct function
• A function struct can be used to define a structure array. Syntax is
Student=struct(‘filed1’,vaule1, ‘filed2’, value2,….)
• Previous structure example can be rewritten as

>> student=struct('name','Kalpana Rawat','rollno',44,'marks',[44 34 67 19 9])


>> student(2)=struct('name',‘Mallika Rawat','rollno',45,'marks',[22 14 27 29 0])
>> student
1x2 struct array with fields:
name
rollno
marks

Note: Nesting of structure is also possible i.e filed may be another structure
Structure Arrays
• Obtaining data from structures
>>first_student_name=student(1).name
first_student_name =
Kalpana Rawat
>>first_student_rollno=student(1).rollno
first_student_rollno =
44
>>first_student_Marks=student(1).marks
first_student_Marks =
44 34 67 19 9
• Try these
>>Second_student_name=student(2).name
>>Second_student_rollno=student(2).rollno
>>Second_student_Marks=student(2).marks
Cell Arrays
Cell Arrays: Array of Cells
>> sample=cell(2,2); %sample is a 2x2 cell array
Entering values in cell arrays
>> sample(1,1)={[54 37 59; 18 69 59; 72 27 49]};
>>sample(1,2)={'Mallika Tiwari'};
>>sample(2,1)={[2i,1-7i,-6]};
>>sample(2,2)={['abcd', 'efgh', 'ijkl']};

To display cell array sample in condensed form, type


>>sample
sample =
[3x3 double] 'Mallika Tiwari'
[1x3 double] 'abcdefghijkl'
Cell Arrays
To display the full cell contents use celldisp function
>> celldisp(sample)
sample{1,1} =
54 37 59
18 69 59
72 27 49
sample{2,1} =
0 + 2.0000i 1.0000 - 7.0000i -6.0000
sample{1,2} =
Mallika Tiwari
sample{2,2} =
abcdefghijkl
Cell Arrays
For graphical display use cellplot
>> cellplot(sample)
Some useful commands of
structure & cell
• Cell2struct, syntax
sample_struct=cell2struct(sample, fields, dimen)

• Num2cell , syntax
c_array=num2cell(number)

• Struct2cell , syntax
c_array=struct2cell(sample-struct)
=

You might also like