0%

Matlab应用实践

实验一 基础练习

练习1 基本操作和简单语句输入

  1. 用函数sym定义符号矩阵:

    1
    >> sym_matrix = sym('[a b c;Jack Help_Me NO_WAY]')

    结果:

    1
    2
    3
    4
    sym_matrix =

    [ a, b, c]
    [ Jack, Help_Me, NO_WAY]
  2. 用函数syms定义符号矩阵

    1
    2
    3
    4
    5
    >> syms a b c ;
    >> M1 = sym('Classical');
    >> M2 = sym(' Jazz');
    >> M3 = sym('Blues');
    >> A = [a b c;M1,M2,M3;sym([2 3 5])]

    结果:

    1
    2
    3
    4
    5
    A =

    [ a, b, c]
    [ Classical, Jazz, Blues]
    [ 2, 3, 5]
  3. 输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >> A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3]

    A =

    7 1 5
    2 5 6
    3 1 5


    B =

    1 1 1
    2 2 2
    3 3 3

    A(2,3)——输出矩阵A第二行第三列的值

    1
    2
    3
    4
    5
    >> A(2, 3)

    ans =

    6

    A(:,2)——输出矩阵A第二列的所有值

    1
    2
    3
    4
    5
    6
    7
    >> A(:,2)

    ans =

    1
    5
    1

    A(3,:)——输出矩阵A第三行的所有值

    1
    2
    3
    4
    5
    >> A(3,:)

    ans =

    3 1 5

    A(:,1:2:3)—— 输出矩阵A的第一列和第三列的值

    1
    2
    3
    4
    5
    6
    7
    >> A(:,1:2:3)

    ans =

    7 5
    2 6
    3 5

    A(:,3).*B(:,2)——输出矩阵A的第三列与矩阵B的第二列的乘积

    1
    2
    3
    4
    5
    6
    7
    >> A(:,3).*B(:,2)

    ans =

    5
    12
    15

    A(:,3).*B(2,:)——输出矩阵A的第三列与矩阵B的第二行的乘积

    1
    2
    3
    4
    5
    6
    7
    >> A(:,3).*B(2,:)

    ans =

    10 10 10
    12 12 12
    10 10 10

    A*B——将矩阵A与矩阵B进行矩阵乘法运算

    1
    2
    3
    4
    5
    6
    7
    >> A*B

    ans =

    24 24 24
    30 30 30
    20 20 20

    A.*B——将矩阵A与矩阵B中相同位置的元素相乘

    1
    2
    3
    4
    5
    6
    7
    >> A.*B

    ans =

    7 1 5
    4 10 12
    9 3 15

    A^2——将矩阵A与矩阵A进行矩阵乘法运算

    1
    2
    3
    4
    5
    6
    7
    >> A^2

    ans =

    66 17 66
    42 33 70
    38 13 46

    A.^2——将矩阵A与矩阵A相对应位置的元素相乘

    1
    2
    3
    4
    5
    6
    7
    >> A.^2

    ans =

    49 1 25
    4 25 36
    9 1 25

    B/A——矩阵B乘矩阵A的逆

    1
    2
    3
    4
    5
    6
    7
    >> B/A

    ans =

    0.1842 0.2105 -0.2368
    0.3684 0.4211 -0.4737
    0.5526 0.6316 -0.7105

    B./A——矩阵B与矩阵A相对应的元素相除

    1
    2
    3
    4
    5
    6
    7
    >> B./A

    ans =

    0.1429 1.0000 0.2000
    1.0000 0.4000 0.3333
    1.0000 3.0000 0.6000
  4. 输入C=1:2:20,则C(i)表示什么?其中i=1,2,3,…,10

    结果:

    1
    2
    3
    4
    5
    >> C=1:2:20

    C =

    1 3 5 7 9 11 13 15 17 19

    C(i)表示第i位的数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> C(1)

    ans =

    1

    >> C(5)

    ans =

    9
  5. 查找已创建变量的信息,删除无用的变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> A

    A =

    7 1 5
    2 5 6
    3 1 5

    >> clear A
    >> A
    未定义函数或变量 'A'

练习2 编程

  1. 编写程序,计算1+3+5+7+…+(2n+1)的值(用input 语句输入n 值)

    1
    2
    3
    4
    5
    6
    7
    8
    clear
    clc
    n = input('input n = ');
    sum = 1;
    for i = 1:n
    sum = sum + (2*i+1);
    end
    disp(['sum = ' num2str(sum)]);

    结果:

    1
    2
    input n = 10
    sum = 121
  2. 编写分段函数$y = {

    \[\begin{array}{ll} x & \textrm{$0 \leq x<1$}\\ 2-x & \textrm{$1 \leq x \leq 2$}\\ 0 & \textrm{其他} \end{array}\]

    .\(的函数文件,存放于文件ff.m中,计算出\)f(-3)\(、\)f()\(、\)f()$的值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    x = input('x = ');
    if(x>=0 && x<1)
    fx = x;
    else if(x >= 1 && x <= 2)
    fx = 2 - x;
    else
    fx = 0;
    end
    end
    disp(['f(x) = ', num2str(fx)]);

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    x = 0.5
    f(x) = 0.5
    x = 1.5
    f(x) = 0.5
    x = -2
    f(x) = 0
    x = 3
    f(x) = 0

练习3 矩阵计算

  1. 加、减运算

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    clear
    clc
    A=[1, 1, 1; 1, 2, 3; 1, 3, 6];
    B=[8, 1, 6; 3, 5, 7; 4, 9, 2];
    X=A+B;
    Y=A-B;
    disp(['A+B = ']);
    disp(X);
    disp(['A-B = ']);
    disp(Y);

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    A+B = 
    9 2 7
    4 7 10
    5 12 8

    A-B =
    -7 0 -5
    -2 -3 -4
    -3 -6 4
  2. 乘法

    1. 两个矩阵相乘

      1
      2
      3
      4
      5
      6
      7
      8
      9
      X= [2 3 4 5 
      1 2 2 1];
      Y=[0 1 1
      1 1 0
      0 0 1
      1 0 0];
      Z = X*Y;
      disp(['Z = ']);
      disp(Z);

      结果:

      1
      2
      3
      Z = 
      8 5 6
      3 3 3
    2. 矩阵的数乘

      1
      2
      3
      a = 2*X;
      disp('a = ');
      disp(a);

      结果:

      1
      2
      3
      a = 
      4 6 8 10
      2 4 4 2
    3. 向量的点乘(内积)

      1
      2
      3
      4
      X=[-1 0 2]; Y=[-2 -1 1];
      Z=dot(X, Y)
      % 或者
      sum(X.*Y)

      结果:

      1
      2
      3
      Z =

      4
      1
      2
      3
      ans =

      4
    4. 向量叉乘

      1
      2
      3
      a=[1 2 3];
      b=[4 5 6];
      c=cross(a,b)

      结果:

      1
      2
      3
      c =

      -3 6 -3
    5. 混合积

      1
      2
      a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3];
      x=dot(a, cross(b, c))

      结果:

      1
      2
      3
      x =

      54
  3. 矩阵的除法

    1
    2
    3
    a=[1 2 3; 4 2 6; 7 4 9];
    b=[4; 1; 2];
    x=a\b

    结果:

    1
    2
    3
    4
    5
    x =

    -1.5000
    2.0000
    0.5000
  4. 矩阵乘方

    1. A为方阵,p 为大于0 的整数时,A^P 表示A 的P 次方,即A 自乘P 次;p 为小于0 的整数时,A^P 表示A-1 的P 次方。

      1
      2
      A=[1 2 3; 4 2 6; 7 4 9];
      A^2

      结果:

      1
      2
      3
      4
      5
      ans =

      30 18 42
      54 36 78
      86 58 126
    2. A 为方阵,p 为非整数时,则其中V 为A 的特征向量,为特征值矩阵。

      1
      2
      A=[1 2 3; 4 2 6; 7 4 9];
      A^0.5

      结果:

      1
      2
      3
      4
      5
      ans =

      -0.6094 - 0.0000i 2.4744 + 0.0000i -0.1031 - 0.0000i
      0.3712 - 0.0000i 1.3908 + 0.0000i 1.3197 - 0.0000i
      2.8112 - 0.0000i -0.6461 + 0.0000i 3.1847 - 0.0000i
  5. 矩阵的转置

    1
    2
    A=[1 2 3; 4 2 6; 7 4 9];
    A'

    结果:

    1
    2
    3
    4
    5
    ans =

    1 4 7
    2 2 4
    3 6 9
  6. 矩阵的逆矩阵

    1. 方法一

      1
      2
      3
      A=[1 2 3; 2 2 1; 3 4 3];
      inv(A)
      %或 A^(-1)

      结果:

      1
      2
      3
      4
      5
      ans =

      1.0000 3.0000 -2.0000
      -1.5000 -3.0000 2.5000
      1.0000 1.0000 -1.0000
    2. 方法二

      1
      2
      3
      B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];
      C=rref(B); %化行最简形
      X=C(:, 4:6)

      结果:

      1
      2
      3
      4
      5
      X =

      1.0000 3.0000 -2.0000
      -1.5000 -3.0000 2.5000
      1.0000 1.0000 -1.0000
  7. 方阵的行列式

    1
    2
    A=[1 2 3; 2 2 1; 3 4 3];
    D=det(A)

    结果:

    1
    2
    3
    D =

    2.0000
  8. 符号矩阵的四则运算

    1
    2
    3
    4
    A=sym('[1/x,1/(x+1);1/(x+2),1/(x+3)]');
    B=sym('[x,1;x+2,0]');
    C=B-A
    D=A\B

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    C =

    [ x - 1/x, 1 - 1/(x + 1)]
    [ x - 1/(x + 2) + 2, -1/(x + 3)]


    D =

    [ -x*(2*x^2 + 7*x + 6), (x*(x^2 + 3*x + 2))/2]
    [ 2*(x + 1)^2*(x + 3), -(x*(x + 1)*(x + 3))/2]
  9. 符号矩阵的简化

    1. 因式分解

      1
      2
      syms x;
      factor(x^9-1)

      结果:

      1
      2
      3
      ans =

      [ x - 1, x^2 + x + 1, x^6 + x^3 + 1]
    2. 符号矩阵的展开

      1
      2
      3
      syms x y;
      p=expand((x+1)^3)
      q=expand(sin(x+y))

      结果:

      1
      2
      3
      4
      5
      6
      7
      8
      p =

      x^3 + 3*x^2 + 3*x + 1


      q =

      cos(x)*sin(y) + cos(y)*sin(x)
    3. 同类式合并

      Collect(s,v)s中的变量v的同幂项系数合并。

    4. 符号简化

      1
      2
      Simple(s);
      Pretty(s);

练习4 秩与线性相关性

  1. 矩阵和向量组的秩以及向量组的线性相关性

    1
    2
    A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4];
    B=rank(A)

    结果:

    1
    2
    3
    B =

    3

    由于秩为3 < 向量个数,因此向量组线性相关。

  2. 向量组的最大无关组

    1
    2
    3
    4
    5
    6
    7
    8
    a1=[1 -2 2 3]';
    a2=[-2 4 -1 3]';
    a3=[-1 2 0 3]';
    a4=[0 6 2 3]';
    a5=[2 -6 3 4]';
    A=[a1 a2 a3 a4 a5]
    format rat %以有理格式输出
    B=rref(A) %求A的行最简形

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    A =

    1 -2 -1 0 2
    -2 4 2 6 -6
    2 -1 0 2 3
    3 3 3 3 4


    B =

    1 0 1/3 0 16/9
    0 1 2/3 0 -1/9
    0 0 0 1 -1/3
    0 0 0 0 0

练习5 线性方程的组的求解

  1. 利用矩阵除法求线性方程组的特解(或一个解) \[ \left\{ \begin{array}{ll} 5x_1 + & 6x_2 & & & & = & 1\\ x_1 + & 5x_2 + & 6x_3 & & & = & 0\\ & x_2 + & 5x_3 + & 6x_4 & & = & 0\\ & & x_3 + & 5x_4 + & 6x_5 & = & 0\\ & & & x_4 + & 5x_5 & = & 1 \end{array} \right. \]

    1
    2
    3
    4
    5
    6
    7
    8
    A=[5 6 0 0 0
    1 5 6 0 0
    0 1 5 6 0
    0 0 1 5 6
    0 0 0 1 5];
    B=[1 0 0 0 1]';
    R_A=rank(A) %求秩
    X=A\B %求解

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    R_A =

    5


    X =

    1507/665
    -229/133
    37/35
    -79/133
    212/665

    这就是方程的解。

  2. 求方程组的解: \[ \left\{ \begin{array}{ll} x_1 + & x_2 - & 3x_3 - & x_4 & = & 1\\ 3x_1 - & x_2 - & 3x_3 + & 4x_4 & = & 4\\ x_1 + & 5x_2 - & 9x_3 - & 8x_4 & = & 0 \end{array} \right. \]

    1
    2
    3
    A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
    B=[1 4 0]';
    X=A\B

    结果:

    1
    2
    3
    4
    5
    6
    X =

    0
    0
    -8/15
    3/5

实验二离散时间信号分析

-------The end of this article  Thank you for your reading-------