📄 tutor1.m
字号:
%The colon has another very useful function. The command x=y(:) strings out
%the elements of y by columns and places them in a column vector. Clearly,
%for a row vector, this is equivalent to a transposition.
%The elements of a matrix z can therefore also be addressed by a single
%argument which represents its position in the strung out column vector
a=[1 2 3;4 5 6;7 8 9] %A 3x3 matrix
%When strung out, a(1)=1, a(2)=4, a(3)=7, a(4)=2 etc. To see this enter
b=a(4) %this should equal 2
pause %strike a key to continue
%To see the strung out order enter the command
a(:) %the strung out column vector
pause %strike a key to continue
clc
%Here are some useful matrices in MATLAB
a=zeros(2,3) %A 2x3 matrix with all elements zero
b=ones(2,3) %A 2x3 matrix with all elements equal to one
c=eye(3) %A square 3x3 identity matrix
pause %strike a key to continue
clc
%COMPLEX NUMBERS
%Variables may be complex-valued. Complex entries are entered in rectangular
%form (e.g. 2+i*3). All results are returned in the same form. Either i or j
%may be used for the imaginary unit. Consider for example.
j=sqrt(-1);i=j; %Force i or j to be imaginary unit (not necessary).
zc=2+j*3 %A complex number
%Its real and imaginary parts may be accessed via
zr=real(zc),zi=imag(zc) %the real and imaginary parts of zc
%Thus zcomp is in fact the matrix zreal+j*zimag
pause %strike a key to continue
%The absolute magnitude and angle may be found as
zabs=abs(zc),zr=angle(zc) %Magnitude and angle of zc
%NOTE:Angles are returned in radians. To find the angle in degrees,
%we use the conversion deg=rad*180/pi. Thus
za= 180*angle(zc)/pi %Angle of zc in degrees
pause %strike a key to continue
clc
%The complex conjugate of the matrix is accessed by the command "conj"
zstar=conj(zc) %the conjugate of zc
pause %strike a key to continue
clc
%TRANSPOSE
%The transpose command is an apostrophe ('). Consider
c=[1 5 2;3 4 8] %a 2x3 matrix
%The transpose of this matrix is
c' %the transposed 3x2 matrix
pause %strike a key to continue
clc
%NOTE:For complex matrices the operation ' actually
%results in the COMPLEX CONJUGATE TRANSPOSE. For example
a=[2+i -1+5*i;6 4+i*3] %A matrix of complex numbers
b=a' %Its complex conjugate transpose
pause %strike a key to continue
%The non-conjugated transpose is obtained by using the command .' instead
%(a period followed by the apostrophe)
c=a.' %the non-conjugated transpose the way we normally visualize it
pause %strike a key to continue
clc
%Consider the following commands
a1=[1 2 3 ; 5,6 7] %A 3x2 matrix
b=[1+2*i 5 -j*7 9] %A 4-element row vector
c=[2 4 6 8]' %A 4-element column vector
pause %strike a key to continue
d=(2:2:8)' %Same as vector c
e=a1(:) %An 6-element column vector
pause %strike a key to continue
clc
%COMPUTATIONAL ASPECTS
%MATLAB is an extremely powerful computational tool. The greatest advantage
%of this computational aspect is the host of built in or supplied operations
%and functions which obviates the need for any extensive programming
%OPERATIONS ON MATRICES AND THE "DOT" CONVENTION
%Let us choose two matrices a and b and define the various operations
%allowed by MATLAB. These seemingly innocuous operations can actually prove
%both powerful or disastrous depending on how they are used or misused.
a=[1 2;3 4],b=[4 5;6 7],
pause %strike a key to continue
%ADDITION AND SUBTRACTION:
%In operations involving a scalar and a matrix, the scalar is treated as a
%matrix with the same dimensions as the matrix with all entries equal to the
%scalar value. The operations of addition and subtraction are performed
%element by element.
a,c=4-a
pause %strike a key to continue
%For two matrices, addition and subtraction is also elementwise provided
%the dimensions are identical.
a,b,d=a-b
pause %strike a key to continue
clc
%MULTIPLICATION
%The operation a.*b (NOTE THE DOT) denotes elementwise multiplication. Here
%a and b may be matrices of the same size or one or both may be scalar.
a,b,c=a.*b
pause %strike a key to continue
clc
%If a is a scalar, each element is of b is multiplied by a
a,d=4 .*a
%NOTE the space between 4 and the dot is important in v3.5, else the dot acts
%as a decimal point following the 4. To avoid confusion enclose numbers in ()
pause %strike a key to continue
clc
%For matrices, a*b denotes matrix multiplication. The columns of a must equal
%the rows of b. If not, an error results. If a is scalar, a*b = a.*b.
a,d=4;d1=d.*a,d2=d*a
pause %strike a key to continue
clc
%A third form of multiplication yields a*b the so called outer product when
%a is a column matrix and b a row matrix.
a=[1;2;3],b=a',c=a*b
pause %strike a key to continue
clc
%DIVISION
%Elementwise division is produced by using a./b. Either a or b may be scalar
a=[2 4;6 8],b=[1 2;2 4],c=a./b
pause %strike a key to continue
clc
%The quantity a/b is not defined in the usual sense. Actually there are two
%types of division operators in MATLAB, the left and right division denoted
%by the slashes / and \. We shall not discuss these at this time
pause %strike a key to continue
clc
%EXPONENTIATION
%Exponentiation can also be elementwise (.^) or matrixwise (^).
a=[1 2;3 4],b=a.^2,c=(2).^a
pause %strike a key to continue
clc
%NOTE: Elementwise exponentiation requires dimensional consistency
%unless the variable or exponent is a scalar
%But functions such as sqrt (square root), exp (raising to the power e)
%are all implemented elementwise.
a=[1 4;9 36],b=sqrt(a)
pause %strike a key to continue
clc
%Here are some useful MATLAB OPERATIONS
%round(x): rounds elements of x to nearest integers
x=[2.1 3.6;-3.1 -3.6],y=round(x)
pause %strike a key to continue
clc
%fix(x): truncates fractional parts of elements of x
x=[2.1 3.6;-3.1 -3.6],y=fix(x)
pause %strike a key to continue
clc
%floor(x), ceil(x): rounds elements of x to lower or upper nearest integers
x=[2.1 3.6;-3.1 -3.6],y=floor(x),z=ceil(x)
pause %strike a key to continue
clc
%sign(x): returns 1 if x>1 or -1 if x<1 and 0 if x=0
x=[2.1 3.6;-3.1 0],y=sign(x)
pause %strike a key to continue
clc
%rem(x,a): returns remainder left after dividing x by a
x=[2.1 35;-3 0],y=rem(x,3)
pause %strike a key to continue
clc
%COLUMNWISE OPERATIONS
%min(x),max(x): returns min or max value for each column of x.
x=[2.1 3.6 1.5;-3.1 1 2.3],ymin=min(x),ymax=max(x)
pause %strike a key to continue
clc
%mean(x),median(x): mean or median of each column of x
x=[2 4 3;-3 4 2;3 3 3],y=mean(x),z=median(x)
pause %strike a key to continue
clc
%sort(x) returns columns of x in sorted order
x=[2 4 3;-3 4 2;-1 1 -2],y=sort(x)
%[y,k]=sort(x) also returns (columnwise) the indices of x used in the sort
[y,k]=sort(x)
pause %strike a key to continue
clc
%sum(x),prod(x) sum or product of columns of x
x=[2 4 3;-3 4 2;2 1 -1],y=sum(x),z=prod(x)
pause %strike a key to continue
clc
%cumsum(x),cumprod(x) cumulative sum or product for each column of x
x=[2 4 3;-3 4 2;2 -2 3],y=cumsum(x),z=cumprod(x)
pause %strike a key to continue
clc
%diff(x) difference between adjacent values of columns of x
x=[2 4 3;-3 4 2;3 -3 5],y=diff(x)
pause %Strike a key to continue
clc
% POLYNOMIALS AND ROOTS
%Consider the polynomial f(x) = x^3 + 5x^2 +3x + 2
%To find its roots, we set up the coefficient array as follows
p=[1 5 3 2]
%Note that the coefficients are in descending powers of x
%To find its roots we use the routine roots as follows
rts=roots(p)
%Note that rts is a column vector!!
pause %Strike a key to continue
%To reassemble the polynomial from its roots, we use the command poly
pp=poly(rts)
%The array pp should equal p (to within machine roundoff)
[p;pp]
pause %Strike a key to continue
%To force the coefficients to be real, we could use
rts=real(poly(rts))
pause %Strike a key to continue
%To evaluate the polynomial f(x) at various values of x
%we first generate an array of values. For example
zz=[0 1 2 -1]
%Then we use the command polyval to evaluate the polynomial as follows
ff=polyval(p,zz)
pause %STRIKE A KEY TO END THIS PORTION
echo off
%clear a a1 avar b c d d1 d2 e ff i j k p pp rts s
%clear x y ymax ymin z za zabs zc zi zr zstar zz
clear
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -