zhonglingshan1

化学版主, 技术版主

最新动态 2月前

  1. 3月前
    2018-10-10 11:29:59
    zhonglingshan1 更新于 如何获得真正的随机数?

    用真随机数发生器产生随机数,然后把这个随机数作为伪随机数发生器的种子?

  2. 6月前
    2018-07-04 08:57:06

  3. 10月前
    2018-03-19 17:18:10
    zhonglingshan1 更新于 Markdown 功能测试帖

    @sci-lavisher 厉害了,化学版主信号实验报告。

    本学渣是学计算机的(

  4. 2018-03-17 15:48:14
    zhonglingshan1 更新于 Markdown 功能测试帖

    中!

  5. 2018-03-17 15:46:31
    zhonglingshan1 更新于 Markdown 功能测试帖

    数字信号处理与控制实验报告(1)

    标签(空格分隔): 实验报告 数字信号处理与控制 作业



    [TOC]


    1. 实验题目

    1. 输入题目中给出的语句并观察输出,简述语句的作用;
    2. 根据题目要求编写相应的 Matlab 程序。

      详细要求见第 3 节实验报告部分。


    2. 实验目的

    1. 了解 Matlab 语言的主要特点及作用;
    2. 熟悉 Matlab 主界面,初步掌握 Matlab 命令窗和编辑窗的操作方法;
    3. 学习简单的数组赋值、数组运算、绘图、流程控制的程序编写。

    3. 实验报告

    3.1. 简单的数组赋值方法

      每输入一行命令,观察输出结果,然后在上述各命令行的后面标注其含义。

    3.1.1.

    >> A = [123; 456; 789]     % 将 A 赋值为一个 3 行 1 列的数组,数组元素依次为 123,456,789。
    
    A =
    
       123
       456
       789
    
    >> A(4, 2) = 11            % 将数组第 4 行第 2 列赋值为 11,若数组大小不足则自动扩展,
                               % 其余新增元素赋值为 0。
    
    A =
    
       123     0
       456     0
       789     0
         0    11
    
    >> A(5, :) = [-13-14-15]   % 将数组第 5 行赋值。本来三个数之间应有空格,但程序提示数组下标溢出。
                               % 为了让后续步骤能够进行,暂且将空格去掉。
    
    A =
    
       123     0
       456     0
       789     0
         0    11
       -42   -42
    
    >> A(4, 3) = abs(A(5, 1))  % 将 A(5, 1) 的绝对值赋值给 A(4, 3)。
    
    A =
    
       123     0     0
       456     0     0
       789     0     0
         0    11    42
       -42   -42     0
    
    >> A([2, 5], :) = [ ]      % 将数组的第 2 行和第 5 行删除。
    
    A =
    
       123     0     0
       789     0     0
         0    11    42
    
    >> A / 2                   % 数组中的每一个元素都除以 2。
    
    ans =
    
       61.5000         0         0
      394.5000         0         0
             0    5.5000   21.0000
    
    >> A(4, :) = [sqrt(3) (4+5)/6*2 -7]
                               % 数组的第 4 行分别赋值以对应值。sqrt() 为计算算数平方根的函数。
    
    A =
    
      123.0000         0         0
      789.0000         0         0
             0   11.0000   42.0000
        1.7321    3.0000   -7.0000

    3.1.2.

    >> B = [1+2i, 3+4i; 5+6i, 7+8i]
    
    B =
    
       1.0000 + 2.0000i   3.0000 + 4.0000i
       5.0000 + 6.0000i   7.0000 + 8.0000i
    
    >> C = [1, 3; 5, 7] + [2, 4; 6, 8] * i
    
    C =
    
       1.0000 + 2.0000i   3.0000 + 4.0000i
       5.0000 + 6.0000i   7.0000 + 8.0000i
    
    >> C = [1, 3; 5, 7] + [2, 4; 6, 8] i
     C = [1, 3; 5, 7] + [2, 4; 6, 8] i
                                     ↑
    Error: Unexpected MATLAB expression.
    
    >> D = sqrt(2 + 3i)           % 求复数的算数平方根
    
    D =
    
       1.6741 + 0.8960i
    
    >> D * D                      % 复数的乘法
    
    ans =
    
       2.0000 + 3.0000i
    
    >> E = C'                     % 求矩阵的复共轭矩阵
    
    E =
    
       1.0000 - 2.0000i   5.0000 - 6.0000i
       3.0000 - 4.0000i   7.0000 - 8.0000i
    
    >> F = conj(C)                % 求矩阵中每个元素的共轭
    
    F =
    
       1.0000 - 2.0000i   3.0000 - 4.0000i
       5.0000 - 6.0000i   7.0000 - 8.0000i
    
    >> G = conj(C)'               % 先求矩阵元素的共轭,再进行复共轭转置
    
    G =
    
       1.0000 + 2.0000i   5.0000 + 6.0000i
       3.0000 + 4.0000i   7.0000 + 8.0000i

    3.1.3.

    >> H1 = ones(3, 2)        % 生成一个 3 行 2 列的元素全为 1 的矩阵
    
    H1 =
    
         1     1
         1     1
         1     1
    
    >> H2 = zeros(2, 3)       % 生成一个 2 行 3 列的元素全为 0 的矩阵
    
    H2 =
    
         0     0     0
         0     0     0
    
    >> H3 = eye(4)            % 生成一个 4 行 4 列的单位矩阵
    
    H3 =
    
         1     0     0     0
         0     1     0     0
         0     0     1     0
         0     0     0     1
    

    3.2. 数组的基本运算

    >> A = [1 3 5];
    >> B = [2 4 6];
    
    >> C = A + B           % 数组对应位置的元素相加
    
    C =
    
         3     7    11
    
    >> D = A - 2           % 数组各元素都 - 2
    
    D =
    
        -1     1     3
    
    >> E = B - A           % 数组对应位置的元素相减
    
    E =
    
         1     1     1
    
    >> F1 = A * 3          % 数组各元素 * 3
    
    F1 =
    
         3     9    15
    
    >> F2 = A .* B         % 数组各元素对应相乘
    
    F2 =
    
         2    12    30
    
    >> F3 = A ./ B         % 数组 A 中的元素对应除以数组 B 中的元素
    
    F3 =
    
        0.5000    0.7500    0.8333
    
    >> F4 = A .\ B         % 数组 B 中的元素对应除以数组 A 中的元素
    
    F4 =
    
        2.0000    1.3333    1.2000
    
    >> F5 = B .\ A         % 数组 A 中的元素对应除以数组 B 中的元素
    
    F5 =
    
        0.5000    0.7500    0.8333
    
    >> F6 = B .^ A         % 数组各元素对应乘方
    
    F6 =
    
               2          64        7776
    
    >> F7 = 2 ./ B
    
    F7 =
    
        1.0000    0.5000    0.3333
    
    >> F8 = B .\ 2
    
    F8 =
    
        1.0000    0.5000    0.3333
    
    >> Z1 = A * B'         % 矩阵乘法
    
    Z1 =
    
        44
    
    >> Z2 = B' * A
    
    Z2 =
    
         2     6    10
         4    12    20
         6    18    30
    

    3.3. 常用函数及相应的信号波形表示

      根据题目要求,绘制 4 个函数的波形。

    $$f(t)=4\mathrm{e}-2t\qquad(0<t<4)$$ $$f(t)=\mathrm{e}-t\cos(2\pi t)\qquad(0<t<3)$$ $$f(k)=k\qquad(0<k<10)$$ $$f(k)=k\sin(k)\qquad(-20<k<20)$$

      代码如下:

    t = 0 : 0.01 : 4;
    f = 4 * exp(1) - 2 * t;
    subplot(2, 2, 1), plot(t, f);
    title('f(t)=4e-2t');
    xlabel('t');
    ylabel('f(t)');
    
    t = 0 : 0.01 : 3;
    f = exp(1) - t .* cos(2 * pi * t);
    subplot(2, 2, 2), plot(t, f);
    title('f(t)=e-t*cos(2*pi*t)');
    xlabel('t');
    ylabel('f(t)');
    
    k = 0 : 0.01 : 10;
    f = k;
    subplot(2, 2, 3), plot(k, f);
    title('f(k)=k');
    xlabel('k');
    ylabel('f(k)');
    
    k = -20 : 0.01 : 20;
    f = k .* sin(k);
    subplot(2, 2, 4), plot(k, f);
    title('f(k)=k*sin(k)');
    xlabel('k');
    ylabel('f(k)');

    1.png-77.1kB


    3.4. 简单的流程控制编程

    3.4.1.

    $$X=\sum_{n=1}^{20}(2n-1)^2=1^2+3^2+5^2+\dots+(2n-1)^2$$

      实现代码如下:

    X = 0;
    for n = 1 : 20
        X = X + (2*n-1)^2;
    end

      所得结果为:

    >> X
    
    X =
    
           10660

    3.4.2.

    $$X=1\times2+2\times3+3\times4+\dots+99\times100=\sum_{n=1}^{99}n(n+1)$$

      实现代码如下:

    X = 0;
    for n = 1 : 99
        X = X + n * (n+1);
    end

      所得结果为:

    >> X
    
    X =
    
          333300

    3.4.3.

    用循环语句建立一个有 20 个分量的数组,使 $a{k+2}=a{k+1}+a_{k}$,式中 $k=1,\space2,\space3,\space\dots$ 且 $a_1=1,\space a_2=2$。

      实现代码如下:

    a(1) = 1;
    a(2) = 1;
    for n = 1 : 18
        a(n+2) = a(n+1) + a(n);
    end

      所得结果为:

    >> a
    
    a =
    
      Columns 1 through 5
    
               1           1           2           3           5
    
      Columns 6 through 10
    
               8          13          21          34          55
    
      Columns 11 through 15
    
              89         144         233         377         610
    
      Columns 16 through 20
    
             987        1597        2584        4181        6765

    4. 实验总结与心得


    5. 附录


    6. 参考

  6. 去年
    2017-12-20 02:14:59

    现在才看到= =可惜了

  7. 2017-11-14 14:56:31
    zhonglingshan1 更新于 C++如何防止数组越界

    前几天在知乎上面看到了个类似的问题……
    鉴于楼上已经说得非常清楚了,不罗嗦了 /<<

  8. 2017-03-27 15:28:13
    zhonglingshan1 更新于 万恶的校园网认证

    @Recolic Keghart 方案1,路由器openwrt+mentohust,团队学长的作品(逃
    方案2,自己的电脑共享热点,我是archlinux,create_ap特别方便,随处无线中继,其他linux发行版用法类似,自行google

    mentohust的配置还是有些难度的。。。尤其是锐捷的拨号,一不小心就会被封号。共享热点现在貌似都没法支持 IPv6。

  9. 2017-03-20 16:05:11
    zhonglingshan1 更新于 手机上如何屏蔽广告?

    iOS 的话可以用各种代理软件,比如 Surge 啥的。

  10. 2017-03-20 16:00:51
    zhonglingshan1 更新于 论坛组织一个数学翻译组吧

    @我是大缺弦 哇感觉一个大新闻要诞生了

    不希望在报道上发生偏差 /<<

查看更多