//Functions to compute with vectors and matrices //Author: Gerd Doeben-Henisch //Version: 7.Jan 2009 //Some common constants //Conversion of radiants into grade grad=(2*%pi)/360 //Conversion of radiants into degrees igrad=360/(2*%pi) //*************************************************** //Function to compute the sum of a vector v and the i-th row of a matrix M function[M]=vecAddMi(M,i,v) //Test whether the length of v is equal to the columns of M l=length(v); [r,c]=size(M); if l <> c then error('SIZE of VECTOR DOES NOT MATCH MATRIX'), else for j=1:c, M(i,j) = M(i,j)+v(j), end end endfunction //*************************************************** //Function to compute the difference of a vector v and the i-th row of a matrix M function[M]=vecSubMi(M,i,v) //Test whether the length of v is equal to the columns of M l=length(v); [r,c]=size(M); if l <> c then error('SIZE of VECTOR DOES NOT MATCH MATRIX'), else for j=1:c, M(i,j) = M(i,j)-v(j), end end endfunction //*************************************************** //Function to compute the product of two vectors v,w function[u]=vecprod(v,w) lv=length(v); lw=length(w); u=0 if lv <> lw then error('DIFFERENT LENGTH OF VECTORS'); else for i=1:lv, u=u + (v(i)*w(i)); end end endfunction //*************************************************** //Function to compute the projection of a vector v onto a line with angle theta //angle in degree function[y]=vecproj(v,t) //Convert radiants into degree t=t/igrad y=norm(v)*cos(t) endfunction //*************************************************** //Function to compute the projection of a vector v onto a line with line w function[y]=vecprojL(v,w) y=vecprod(v,w)/norm(w) endfunction //************************************************************* //Function to compute the angle of two vectors v,w in 360 degree //Vectors v,w are column or row vectors function[y]=cosvec(v,w) y=vecprod(v,w)/(norm(v)*norm(w)) //The result in y is the cos-value. We need the invers of this y=acos(y) //The inverse is given in radiants. We want the conversion to degrees y=y/grad endfunction //End of function cosvect ****************************************** //******************************************************* //Function to multiply a vector v with a quadratic matrix M generating a vector u function[u]=vmprod(v,M) [r,c]=size(M) lv=length(v) u=zeros(1,lv) if (r <> lv) then error('sizes of vector and matrix do not match') else for i=1:c //Following the columns of matrix for j=1:r //Working through all elements of v and rows of M u(j)=u(j) + (v(i) *M(i,j)) end end end endfunction //******************************************************* //Function to multiply a vector v with a selectable matrix M generating a vector u function[u]=vmprod2(M,v) [r,c]=size(M) lv=length(v) u=zeros(1,lv) if (r <> lv) then error('sizes of vector and matrix do not match') else for j=1:r //Following the rows of matrix for i=1:c //Working through all elements of v and columns of M u(j)=u(j) + (v(i) *M(j,i)) end end end endfunction //**************************************************** //Funcion to generate a m x n - Matrix with the scalar c function[C] = matrixC(r,c,a) C=[] //New Matrix for i=1:c; for j=1:r; C(i,j)=a; end; end //Generate new matrix with scalar a C endfunction //**************************************************** //Funcion to generate a m x n - Matrix with the scalar c out of a given matrix M function[C] = matrixCC(M,a) C=[] //New Matrix [c,r]=size(M) //Get dimension of given matrix M by columns and rows for i=1:r, for j=1:c, C(i,j)=a, end, end //Generate new matrix with scalar a endfunction