信号与线性系统综合实验 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号与线性系统综合实验 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;相关的知识,希望对你有一定的参考价值。

2、掌握运用Matlab软件分析连续时间信号与系统的时域、频域特性;
3、通过对连续时间信号与系统的综合分析,加深对信号频谱、系统函数、系统频率特性、冲激响应、阶跃响应等概念的理解,了解系统函数零、极点分布与系统的频率特性、稳定性之间的关系。

二、实验内容
1、构建一个包含若干个不同频率分量的周期连续信号(各分量频率自定)f(t),截取该信号的不同长度(注意截取长度应不小于最低频率分量的一个周期),分别用Matlab软件分析所截取信号的频谱(用数值方法画出频谱图,含幅度频谱和相位频谱)。需注意,Matlab采用数值法对连续信号进行分析时,实际上是求出连续信号一些离散点的值,在绘图时连成一条连续的曲线,因此在编程时,离散点应该取得足够密,以保证所绘制波形的光滑性。比较不同长度信号频谱的差异,同时与理论频谱进行比较,并运用所学知识,分析产生这些差异的原因。

2、设计一个LTI连续系统作为滤波器,对上一步构建的信号进行滤波(滤除部分频率分量,保留另一部分频率分量)。通过在S平面分布适当的零极点来设计该滤波器的系统函数H(s),用Matlab软件(可选用数值方法或符号运算方法)分析所设计滤波器的频率响应(含幅频响应和相频响应),并画出频率响应波形。运用所学知识,分析幅频响应与零极点位置的关系。

3、求出所设计滤波器的冲激响应h(t)和阶跃响应g(t)(用Matlab符号运算求解或笔算求解),用Matlab分别画出系统冲激响应与阶跃响应的波形(截取h(t)和 g(t)的一定长度)。根据冲激响应或阶跃响应表达式,结合所画波形,讨论所设计滤波器的稳定性。

4、基于Matlab软件,用所设计的滤波器对构建的信号进行滤波,画出滤波输出信号的时域波形(一定长度)。滤波过程以求离散卷积和的方式实现:分别截取一定长度的信号和滤波器冲激响应,求出其卷积和,作为滤波输出。

5、用Matlab画出上一步所得到滤波输出信号的频谱(幅度谱与相位谱),与第1步得到的频谱进行比较,结合第2步得出的滤波器频率响应,讨论得出这一结果的理论依据。

6、基于f(t)和H(s),采用理论分析的方法,求出滤波输出信号y(t),并求出y(t)的频谱 。利用Matlab画出理论分析得出的y(t)和 的波形,与第4、5步得出的结果进行比较,运用所学知识,分析产生差异的原因。

三、实验要求
1、根据上述实验内容要求,设计实验方案和实验步骤(即对上述实验内容的具体化。例如,确定具体的信号形式、滤波器的滤波特性;确定相关的Matlab实验参数,如信号截取长度、离散化处理的时间间隔等等)。
2、试验前完成相关实验预习准备工作:相关的理论知识的回顾,理论结果的推导,编写好实验程序,分析实验的预期结果。
3、个人独立确定实验方案和实验步骤,完成实验数据的记录和结果分析。信号、滤波器和实验参数的选择等不得与他人完全雷同!

四、实验报告主要内容要求
1、实验方案与步骤(含实验程序);
2、各步骤得出的实验结果和理论分析结果(含必要的理论分析过程);
3、实验结果的分析(主要针对实验内容要求进行分析,需要有必要的分析过程);
4、实验总结、心得体会及对本实验方法、手段及过程的改进建议等。
注意:上述所列各项内容,不是指实验报告的组织结构。试验报告应以实验步骤为主线来撰写,各实验步骤的结果及其相关分析应融合到各个具体实验步骤之中。除实验目的之外,本实验指导的其余部分不必在实验报告中抄录!
实验报告可以打印,但不得与他人雷同!

参考技术A 二、实验内容1、构建一个包含若干个不同频率分量的周期连续信号(各分量频率自定)f(t),截取该信号的不同长度(注意截取长度应不小于最低频率分量的一个周期),分别用Matlab软件分析所截取信号的频谱(用数值方法画出频谱图,含幅度频谱和相位频谱)。需注 参考技术B 网上查查,很多资料的,需要自己整理

20162301实验五 数据结构综合应用

20162301实验五 数据结构综合应用

北京电子科技学院(BESTI)

实 验 报 告

课程:程序设计与数据结构

班级:1623

姓名:张师瑜

学号:20162301

指导教师:娄嘉鹏老师、王志强老师

实验日期:2017年11月20号

实验密级:非密级

实验时间:五天

必修/选修:必修

实验名称:图的实现与应用

实验仪器:电脑

实验目的与要求:

  • 目的:学会实现无向图及有向图。

  • 要求:

??1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

??2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

??3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

实验要求

0 分析系统架构

1 编译、运行、测试系统

2 修改系统

3 分析数据结构、排序、查找算法的应用

0 分析系统架构

技术分享图片

  • ISprite类是精灵类,其中战斗机类、走直线的精灵类(其中子弹类、敌机类都继承了这个类)、爆炸类都继承精灵类。

  • 战斗机类CombatAircraft:首先确保战斗机完全位于Canvas范围内,每隔7帧发射单发黄色子弹。战斗机如果被击中,执行爆炸效果,具体来说,首先隐藏战斗机,然后创建爆炸效果,爆炸用28帧渲染完成,爆炸效果完全渲染完成后,爆炸效果消失。然后战斗机会进入闪烁模式,战斗机闪烁一定次数后销毁。

  • 走直线的精灵类AutoISprite:走直线的Sprite类,其位置只能直上直下。在y轴方向移动speed像素,检查Sprite是否超出了Canvas的范围,如果超出,则销毁Sprite。

  • 敌机类EnemyPlane:敌机类,从上向下沿直线运动。设置一个敌机的抗打击能力和打一个敌机的得分。敌机在绘制完成后要判断是否被子弹打中,判断方法为判断敌机是否与子弹相交。若敌机已经没有能量了,执行爆炸效果。创建爆炸效果完成后,向GameView中添加得分并销毁敌机。

  • 爆炸类Explosion:爆炸效果类,位置不可变,但是可以显示动态的爆炸效果。爆炸效果由14个片段组成,每个爆炸片段绘制2帧。当绘制完所有的爆炸片段后,销毁爆炸效果。得到绘制完整爆炸效果需要的帧数,即28帧。

1 编译、运行、测试系统

  • 从码云上克隆项目 git clone +XXX,用Android Studio打开项目编译运行。
    技术分享图片
    技术分享图片

2 修改系统

  • 在主界面增加了带有开发团队bak的按钮,点击后展现出一个新的页面。
  • 操作过程为:① 在activity_main.xml中增加一个按钮
<Button
        android:id="@+id/btnMe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/btnDev"
        android:layout_below="@+id/btnDev"
        android:layout_marginTop="21dp"
        android:onClick="onClick"
        android:text="开发团队bak" />

② 增加activity_zsybak.xml并加入DatePicker来改变原来的界面。

<DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

③ 增加DevActivitybak

public class DevActivitybak extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zsybak);
    }
}

④ 在MainActivity中的onClick方法中加入片段

 if (viewId == R.id.btnMe){
            startMe();
        }
        
 public void startMe(){
        Intent intent = new Intent(MainActivity.this, DevActivitybak.class);
        startActivity(intent);
    }

⑤ 最后,在AndroidManifest中加入<activity android:name=".DevActivitybak"></activity>

  • 结果如下:
    技术分享图片

技术分享图片

3 分析数据结构、排序、查找算法的应用

  • 我们小组的数据结构为线性结构,主要使用了线性表。例如获取处于活动状态的敌机、存储所有的精灵等。

     public List<EnemyPlane> getAliveEnemyPlanes(){
        List<EnemyPlane> enemyPlanes = new ArrayList<EnemyPlane>();
        for(ISprite s : sprites){
            if(!s.isDestroyed() && s instanceof EnemyPlane){
                EnemyPlane sprite = (EnemyPlane)s;
                enemyPlanes.add(sprite);
            }
        }
        return enemyPlanes;
    }
  • 将所有敌机存储在list中,并进行遍历观察是否与战斗机有交点。若有交点则战斗机死亡。

  List<EnemyPlane> enemies = gameView.getAliveEnemyPlanes();
            for(EnemyPlane enemyPlane : enemies){
                Point p = getCollidePointWithOther(enemyPlane);
                if(p != null){
                    //p为战斗机与敌机的碰撞点,如果p不为null,则表明战斗机被敌机击中
                    explode(gameView);
                    break;
                }
            }
  • 未使用排序、查找算法。

感想

  • 作为本学期也是一年的java课程以来的最后一次实验,或许也是最后一篇博客,感触颇深。在这次大项目的过程中,作为组长的我虽有很多不足但成长了很多收获了很多。本来以为6个人在一个月的时间内完成一个完整的app是一件不能完成的任务,但到今天看到一个打飞机的游戏呈现在自己面前觉得很欣慰也很感激。甚至说,小组成员们在一次次讨论后,在一起学习代码后让我体会到了战友一般的感觉。将原本生疏无比的Android学习到现在对游戏的整体结构了然于心,真的是深刻的体会了“做中学”的意义。

技术分享图片




以上是关于信号与线性系统综合实验 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;的主要内容,如果未能解决你的问题,请参考以下文章

信号实验(02)连续时间系统的时域分析

信号实验(02)连续时间系统的时域分析

信号与系统实验 02 - | 连续系统的Simulink仿真

信号与系统实验 01 - | 连续系统频域分析的MATLAB实现

全套完结信号与线性系统分析--Matlab实验报告手册建议保存

用MATLAB对抽样信号进行恢复