离散实验一
- 格式:doc
- 大小:26.00 KB
- 文档页数:2
班级09电本一班学号2009041507姓名丁孟飞同组人实验日期2011.11.25 室温大气压成绩实验题目:实验一离散时间信号与系统响应一、实验目的:1、熟悉MATLA的主要操作命令;2、学会简单的绘图命令;3、观察离散系统的频率响应;4、学会信号的采样和重建的基本概念。
二、实验仪器:微型计算机(包含MATLAB软件)一台三、实验原理分析:其中由理论计数零点:z=-√2/2-√2/2i或-√2/2+√2/2i;极点:2.计算系列{8 -2 -1 2 3}和{2 3 -1 -3}的离散卷积,并作图表示卷积结果。
解:程序: a=[8,-2,-1,2,3]; b=[2,3,-1,-3]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); title('卷积结果'); xlabel('n'); ylabel('幅度'); 运行结果:分析:计算离散卷积{8 -2 -1 2 3}*{2 3 -1 -3}={2x8,-2x2+3x8,-1x2-2x3-1x8 ,2x2-1x3+2x1-3x8,2x3+3x2+1x1+3x2,3x2+1x1+3x1,-1x3-3x2,-3x3}={16, 20, -16, -21 ,19 ,10,-9, -9}与实验结果相符3.求以下差分方程所描述系统的单位脉冲响应()h n ,050n ≤≤ ()()()()()0.110.06221y n y n y n x n x n +---=-- 解:程序: N=20;a=[1 -2];b=[1 0.1 -0.06]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y);title('单位脉冲响应');xlabel('n');ylabel('幅度');运行结果:2、一信号是三个正弦信号的和,正弦信号的频率为50Hz 、500Hz 、1000Hz ,该信号以800Hz采样。
实验一 常见离散信号的MATLA B 产生和图形显示 授课课时:2学时一、实验目的:(1)熟悉MATL A B 应用环境,常用窗口的功能和使用方法。
(2)掌握MATL A B 在时域内产生常用离散时间信号的方法。
(3)掌握离散信号的基本运算。
(4)掌握简单的绘图命令。
二、实验原理:(一)信号的表示和产生① 单位抽样序列⎩⎨⎧=01)(n δ 00≠=n n 如果在时间轴)(n δ上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n参考程序:例1-1:)2010(()(<<-=n n n x )δclear all n1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。
n=n1:n2;%生成离散信号的时间序列x=[n==n0];%生成离散信号x (n)stem(n,x);%绘制脉冲杆图xlabel (' n');ylabel ('x(n)');%横坐标和纵坐标的标注说明。
title('Unit Sample Sequen c e');%图形上方标注图名axis([-10 20 0 1.2]);%确定横坐标和纵坐标的取值范围② 单位阶跃序列⎩⎨⎧=01)(n u 00<≥n n 例1-2:)202((u )(<<-=n n n x )clear alln1=-2;n2=20;n0=0;n=n1:n2;%生成离散信号的时间序列x=[n>=n0];%生成离散信号x (n)stem(n,x,'filled ');xlabel ('n');ylabel ('x(n)');title('Unit step Sequen c e');axis([-2 20 0 1.2]);③ 正弦序列)sin()(ϕ+=wn A n x例1-3:一正弦信号的频率为1HZ ,振幅值幅度A 为1V ,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。
实验一 离散时间信号的时域分析实验1 序列的产生1. 目的:熟悉C 语言产生和绘制,熟悉MATLAB 中产生信号和绘制信号的基本命令。
2. 具体实验:2.1 单位样本和单位阶跃序列。
Q1.1 运行程序P1.1 ,以产生单位样本序列u[n]并显示它。
答:如图1-1所示。
Q1.2 命令clf , axis , title , xlabel 和ylabel 的作用是什么? 答:clf :擦除当前图形窗口中的图形。
Axis :调整坐标轴X 轴Y 轴的范围。
Title:给绘制的图形加上标题。
Xlabel:给X 轴加上标注。
Ylabel: 给Y 轴加上标注。
Q1.3 修改程序P1.1 以产生带有延时11个样本的延迟单位样本序列ud[n]。
运行修改的程序并显示产生的序列。
答:如图1-2所示。
Q1.4修改程序P1.1 以产生单位步长序列s[n]。
运行修改的程序并显示产生的序列。
答:如图1-3所示。
Q1.5修改程序P1.1 以产生带有超前7个样本的延迟单位样本序列sd[n]。
运行修改的程序并显示产生的序列。
答:如图1-4所示。
Figure 1-2 The unit sample sequence ud[n]Figure 1-1 The shifted unit sample sequence u[n]单位样本序列公式如下所示:Time index nA m p l i t u d eUnit Sample Sequence u[n]Time index nA m p l i t u d eShifted Unit Sample Sequence ud[n]1 , n=0 1 , n=k δ[n]= δ[n-k]=0 , 0≠0 0 , 0≠kFigure 1-3 The unit step sequence s[n] Figure 1-4 The shifted unit step sequence sd[n]单位阶跃序列公式如下所示:1 , n ≥0 1 , n ≥k μ[n]= μ[n-k]=0 , n <0 0 , n <k2.2 指数信号Q1.6 运行程序P1.2 ,以产生复数值的指数序列。
离散数学上机实验报告《离散数学》实验报告姓名:学号:班级:实验一连结词逻辑运算一.实验目的实现二元合取、析取、蕴涵和等价表达式的计算。
熟悉连接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。
二.实验内容从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的真值。
要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。
三.实验环境使用Microsoft Visual C++6.0为编程软件,采用称C/C++语言为编程语言实现。
四.实验过程1.算法分析:合取:p,q都为1的时候为1,其他为0析取:p,q都为0的时候为0,其他为1蕴含:p为1,q为0时为0,其他为1等价:p,q同真同假2.程序代码:#include<stdio.h>int main()int P,Q,a,b,c,d,p,q;printf(" P的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++)printf("\t%d",P);}printf("\n Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++)printf("\t%d",Q);}printf("\n 非P的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(P==0)/*判断非P的值*/ p=1;elseprintf("\t%d",p);}}printf("\n 非Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(Q==1)/*判断非Q的值*/q=0;elseq=1;printf("\t%d",q);}}printf("\n P与Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(Q==0||P==0)/*判断P与Q的值*/elsea=1;printf("\t%d",a);}}printf("\n P或Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(Q==1||P==1)/*判断P或Q的值*/ b=1;elseb=0;printf("\t%d",b);}}printf("\nP蕴含Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(P==1&&Q==0)/*判断P蕴含Q的值*/ c=0;elsec=1;printf("\t%d",c);}}printf("\nP等价Q的值");for(P=0;P<2;P++){for(Q=0;Q<2;Q++){if(P==Q)/*判断P等价Q的值*/d=1;elsed=0;printf("\t%d",d);}}printf("\n");return 0;3.实验数据及结果分析:实验二关系的复合运算及逆运算一.实验目的熟悉关系的复合运算和逆运算,编程实现关系复合运算和逆运算算法。
班 级 学号 姓 名 同组人 实验日期 室温 大气压 成 绩实验题目: 实验一 离散时间信号与系统响应 一、实验目的1.观察离散系统的频率响应和单位脉冲响应并学会其应用。
2.掌握用MATLAB 实现线性卷积的方法及差分方程的求解方法。
3.了解数字信号采样率转换过程中的频谱特征。
4.通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。
二、实验仪器计算机一台 MATLAB7.0软件三、实验原理在数字信号处理中,离散时间信号通常用序列{x(n)}表示。
离散时间系统在数学上定义为将输入序列x(n)映射成输出序列y(n)的唯一性变换或运算,亦即将一个序列变换成另一个序列的系统。
记为y(n)=T[x(n)],通常将上式表示成图()()[]x n y n T −−−→∙−−−→所示的框图。
算子T[∙]表示变换,对T[∙]加上种种约束条件,就可以定义出各类离散时间系统。
1.频率响应:在工程上进行时域分析和轨迹分析用频率响应法,它是分析和设计系统的一中有效经典的方法。
线性时不变系统输入输出关系y(n)=x(n)*h(n)。
H(ejw)是频率响应,离散时间系统的线性卷积,由理论学习我们可知,对于线性时不变离散系统,任意的输入信号()()()...(1)(1)(0)()(1)(1)...k x n x k n k x n n x n x n δδδδ∞=-∞=-=+-+++-+∑x (n )可以用δ(n )及其位移的线性组合来表示,即,当输入δ(n )时,系统的输出y(n)=h(n)。
2.卷积:y=conv(h,x),计算向量h 和x 的卷积,结果放在y 中。
由系统的线性移不变性质可以得到系统对x(n)的响应y(n)为()()()k y n x k h n k ∞=-∞=-∑,称为离散系统的线性卷积,简记为y(n)=x(n)*h(n),也就是说,通过系统的冲激响应,可以将输入信号与系统的冲激响应进行卷积运算,可求得系统的响应。
专业 班级 学号日“离散数学”实验报《离散数学》实验指导一 实验课的任务、性质与目的本实验课程是计算机及信息专业学生的一门专业基础课程,通过实验,帮助学生更好地 掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实 验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计 和分析。
二实验目标1. 掌握离散数学中涉及的相关概念。
2. 培养学生的逻辑思维能力和算法设计的思想。
3. 熟练掌握C 语言程序设计的基本方法和各种调试手段。
4. 熟练掌握包括数组、链表以及邻接表或邻接矩阵等数据结构的建立和运用。
5. 通过实验掌握递归程序设计的基本方法。
6. 掌握图的存储和遍历方法。
三实验要求1. 实验前,复习《离散数学》课程中的有关内容。
2. 上机前编好程序,上机时调试。
3. 编程要独立完成,程序应加适当的注释。
4. 完成实验报告。
四实验报告要求封面:如右图内页: 实验n :1、 实验内容:xxxx2、 实验思路:(设计思路、流程图等)3、 程序清单:需加适当注释4、 运行结果说明:文字用小4号或4号;程序和注释用5号 以班为单位交. 实验一(必修)一实验内容求解第二类Stirling,分别用递推和递归方法求解,并对两者进行分析。
理解集合的概念与性质,划分的概念以及第二类Stirling数的概念与计算方法。
三实验环境C语言编程环境实现。
四实验说明第二类Stirling数是n个元素的集合定义k个等价类的方法数目,表示为S(n, k)。
简单的说,就是有n个元素的集合分成k块的分块方法的数目。
例如有甲、乙、丙、丁四人, 若所有人分成1组,只有所有人在同一组这个方法,因此S(4,l)=l;若所有人分成4组, 只可以人人独立一组,因此S(4,4) = 1;若分成2组,可以是甲乙一组、丙丁一组,或甲丙一组、乙丁一组,或甲丁一组、乙丙一组,或其中三人同一组另一人独立一组,即是:1.{A,B},{C,D}2.{A,C},{B,D}3.{A,D},{B,C}4.{A},{B,C,D}5- {B},{A,C,D}6.{C},{A,B,D}7.{D},{A,B,C}因此S(4,2) = 7…给定S(n,n) = S(n,l) = 1,有递归关系S(n,k) = S(n - l,k~ 1) + kS(n - l,k)上面的递推式可以用组合证明:一方面,如果将元素1单独拿出来划分成1个集合,那么方法数是S(n-l,k-l);另一方面,如果元素1所在的集合不止一个元素,那么可以先将剩下的n-1个元素划分好了以后再选一个集合把1放进去,方法数是k*S(n-l,k);有加法原理得证。
第1篇一、实验目的1. 理解时域离散信号的基本概念和特性。
2. 掌握时域离散信号的表示方法。
3. 熟悉常用时域离散信号的产生方法。
4. 掌握时域离散信号的基本运算方法。
5. 通过MATLAB软件进行时域离散信号的仿真分析。
二、实验原理时域离散信号是指在时间轴上取离散值的一类信号。
这类信号在时间上不连续,但在数值上可以取到任意值。
时域离散信号在数字信号处理领域有着广泛的应用,如通信、图像处理、语音处理等。
时域离散信号的基本表示方法有:1. 序列表示法:用数学符号表示离散信号,如 \( x[n] \) 表示离散时间信号。
2. 图形表示法:用图形表示离散信号,如用折线图表示序列。
3. 时域波形图表示法:用波形图表示离散信号,如用MATLAB软件生成的波形图。
常用时域离散信号的产生方法包括:1. 单位阶跃信号:表示信号在某个时刻发生突变。
2. 单位冲激信号:表示信号在某个时刻发生瞬时脉冲。
3. 正弦信号:表示信号在时间上呈现正弦波形。
4. 矩形脉冲信号:表示信号在时间上呈现矩形波形。
时域离散信号的基本运算方法包括:1. 加法:将两个离散信号相加。
2. 乘法:将两个离散信号相乘。
3. 卷积:将一个离散信号与另一个离散信号的移位序列进行乘法运算。
4. 反褶:将离散信号沿时间轴翻转。
三、实验内容1. 实验一:时域离散信号的表示方法(1)使用序列表示法表示以下信号:- 单位阶跃信号:\( u[n] \)- 单位冲激信号:\( \delta[n] \)- 正弦信号:\( \sin(2\pi f_0 n) \)- 矩形脉冲信号:\( \text{rect}(n) \)(2)使用图形表示法绘制以上信号。
2. 实验二:时域离散信号的产生方法(1)使用MATLAB软件生成以下信号:- 单位阶跃信号- 单位冲激信号- 正弦信号(频率为1Hz)- 矩形脉冲信号(宽度为2)(2)观察并分析信号的波形。
3. 实验三:时域离散信号的基本运算(1)使用MATLAB软件对以下信号进行加法运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(2)使用MATLAB软件对以下信号进行乘法运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(3)使用MATLAB软件对以下信号进行卷积运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(4)使用MATLAB软件对以下信号进行反褶运算:- \( u[n] \)4. 实验四:时域离散信号的仿真分析(1)使用MATLAB软件对以下系统进行时域分析:- 系统函数:\( H(z) = \frac{1}{1 - 0.5z^{-1}} \)(2)观察并分析系统的单位冲激响应。
离散数学实验报告(实验一)专业:自动化班级:学号:姓名:日期2010.10.28一实验内容(二选一)1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值(A)2. 求任意一个命题公式的真值表(B),并根据真值表求主范式(C)。
二实验目的熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
三实验环境进入Visual C++ 环境后,选择菜单“File | New”,在弹出的对话框中单击上方的选项卡“Projects”,选择“Win32 Console Application”工程类型,在“Project name”一栏中填写工程名例如MyFirst,在“Location”一栏中填写工程路径(目录). 选择菜单“Project | Add to Project | New”,为工程添加新的C++源文件。
选择菜单为工程添加新源文件在“File Name”栏填入新添加的源文件名,如MyFirst.cpp,“Location”一栏指定文件路径,按按钮“OK”完成C++源程序的系统新建操作。
编译源程序:选择Build | Build菜单(F7为快捷键),系统将会在Output窗口给出所有的错误信息和警告信息。
当所有错误修正之后,系统将会生成扩展名为.exe的可执行文件。
对于Output窗口给出的错误信息,双击可以使输入焦点跳转到引起错误的源代码处以进行修改。
执行程序:选择Build | Execute菜单项(Ctrl + F5为快捷键),执行程序,将会出现一个DOS窗口,按照程序输入要求正确输入数据后,程序即正确执行。
四实验原理和实现过程(算法描述)1.程序主界面本程序界面主要有两个操作,1:求真值。
2:求任何公式的真值。
操作1完成A 类题要求,操作2完成A,B类题要求。
如果出输入的操作项不是0,1,2,则会提示出错,再次选择。
其界面如图所示:2.算法描述和实现过程在做A类题时,算法实现,首先判断输入格式是否正确,在把蕴含(→),等值(←→),通过变换,化成只有非,合取和析取的等价公式,在利用C语言中的运算符非(!),与(&&)和或(||)算出任何两元变量的真值。
实验一离散时间信号的时域分析陈一凡20212121006一、实验目的:学习使用MATLAB程序产生信号和绘制信号;学习使用MATLAB运算符产生根本离散时间序列——指数序列;学习使用MATLAB三角运算符产生正弦序列;学习使用MATLAB命令产生长度为N且具有零均值和单位方差的正态分布的随机信号;学习使用MATLAB中三点滑动平均算法来实现噪声的移除;学习使用MATLAB程序产生振幅调制信号;学习使用MATLAB函数产生方波和锯齿波;二、实验原理简述:运用运算符和特殊符号,根本矩阵和矩阵控制,根本函数,数据分析,二维图形,通用图形函数,信号处理工具箱等命令,产生以向量形式存储的信号。
三、实验内容与实验结果1、产生并绘制一个单位样本序列运行程序clfn=-10:20;u=[zeros(1,10) 1 zeros(1,20)];stem(n,u);xlabel('时间序号);ylabel('振幅');title('单位样本序列');axis([-10 20 0 1.2]);实验结果如图1所示图1 2.1、生成一个复数值的指数序列:运行程序:clf;c=-(1/12)+(pi/6)*i;K=2;n=0:40;x=K*exp(c*n);subplot(2,1,1);stem(n,real(x));xlabel('时间序号n');ylabel('振幅');title('实部');subplot(2,1,2);stem(n,imag(x));xlabel('时间序号n');ylabel('振幅');title('虚部');实验结果如图2所示0510152025303540时间序号n振幅0510152025303540时间序号n振幅虚部图22.2、生成一个实数值的指数序列: 运行程序:clf;n=0:35;a=1.2;K=0.2; x=K*a.^n; stem(n,x);xlabel('时间序号n');ylabel('振幅');实验结果如图3所示时间序号n振幅图33、产生一个正弦信号: 运行程序:n=0:40; f=0.1; phase=0; A=1.5;arg=2*pi*f*n-phase; x=A*cos(arg); clf; stem(n,x); axis([0 40 -2 2]); grid;title('正弦序列'); xlabel('时间序号n'); ylabel('振幅'); axis;实验结果如图4所示正弦序列时间序号n振幅图44、产生长度为N 且具有零均值和单位方差的正态分布的随机信号: 运行程序:x=4*rand(1,100)-2 plot(x);axis([0,100,-2,2]); title('扫频正弦信号'); xlabel('时间序号n'); ylabel('振幅'); grid;axis;实验结果如图5所示:-2-1.5-1-0.500.511.52扫频正弦信号时间序号n振幅图5并产生如下所示序列:x =Columns 1 through 11Columns 12 through 22Columns 23 through 33Columns 34 through 44Columns 45 through 55Columns 56 through 66Columns 67 through 77Columns 78 through 88Columns 89 through 99Column 1005、利用三点滑动平均算法实现信号中噪声的移除:运行程序:clf;R=51;d=0.8*(rand(R,1)-0.5);m=0:R-1;s=2*m.*(0.9.^m);x=s+d';subplot(2,1,1);plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('时间序号n');ylabel('振幅');legend('d[n] ','s[n] ','x[n] ');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2);plot(m,y(2:R+1),'r-',m,s,'g--');legend('y[n] ','s[n] ');xlabel('时间序号n');ylabel('振幅');实验结果如图6所示:-50510时间序号n振幅2468时间序号n振幅图66.1、产生一个振幅调制信号: 运行程序:n=0:100;m=0.4;fH=0.1; fL=0.01; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; stem(n,y);grid;xlabel('时间序列n');ylabel('振幅');实验结果如图7所示:时间序列n振幅图7、产生频率随时间线性增加的扫频正弦信号: 运行程序:n=0:100; a=pi/2/100; b=0;arg=a*n.*n+b*n; x=cos(arg); clf; stem(n,x);axis([0,100,-1.5,1.5]); title('扫频正弦信号'); xlabel('时间序号n'); ylabel('振幅'); grid;axis;实验结果如图8所示:扫频正弦信号时间序号n振幅图87.1、绘制最大振幅为2.7,周期为10,占空比为60%的方波信号: 运行程序:t=0:30;y=*square(2*pi*0.1*t,60); stem(t,y);xlabel('时间序号n'); ylabel('振幅');实验结果如图9所示:时间序号n 振幅图97.2、绘制最大振幅为2.7,周期为10,占空比为30%的方波信号:运行程序:t=0:30;y=2.7*square(2*pi*0.1*t,30);stem(t,y);xlabel('时间序号n');ylabel('振幅');实验结果如图10所示:时间序号n 振幅图107.3、产生一个振幅为2,周期为20的方波信号:运行程序:t=0:50;y=2*sawtooth(2*pi*0.05*t)stem(t,y);xlabel('时间序号n');ylabel('振幅');实验结果如图11所示:时间序号n 振幅图11并产生了锯齿波序列值如下所示:y =Columns 1 through 11-2.0000 -1.8000 -1.6000 -1.4000 -1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0Columns 12 through 22Columns 23 through 33Columns 34 through 44Columns 45 through 51-1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000 07.4、产生一个振幅为2,周期为20的方波信号:运行程序:t=0:50;y=2*sawtooth(2*pi*0.05*t)stem(t,y);xlabel('时间序号n');ylabel('振幅');实验结果如图12所示:时间序号n 振幅图12并产生了锯齿波序列值如下所示:y =Columns 1 through 11Columns 12 through 22Columns 23 through 33Columns 34 through 44Columns 45 through 51四、实验分析:针对实验1 产生并绘制了一个单位样本序列n=-10:20即产生从-10到20的一个向量u=[zeros(1,10) 1 zeros(1,20)];即产生单位样本序列stem(n,u);即绘制单位样本序列针对实验2 产生一个实指数序列clf;即去除所有的内存变量n=0:35;即产生一个从0到35的向量a=1.2;K=0.2;即对对各系数进展限定x=K*a.^n;即函数表达式stem(n,x);即绘制实指数信号xlabel('时间序号n');ylabel('振幅');即将横坐标记为时间序号n,纵坐标记为振幅产生一个复数值的指数序列c=-(1/12)+(pi/6)*i;即复数的表达式K=2;即对常数进展定义n=0:40;即产生一个从0到40的向量x=K*exp(c*n);即指数表达式subplot(2,1,1);即将平面分成上下两个区域,并在上半部分画图stem(n,real(x)); 即在平面的上半部分画实部图xlabel('时间序号n');ylabel('振幅');title('实部');即对该图进展命名,名为实部subplot(2,1,2);即在下半部分画图stem(n,imag(x));即画虚部图xlabel('时间序号n');ylabel('振幅');title('虚部');即对该图进展命名,名为虚部针对实验3产生一个正弦序列n=0:40;f=0.1;即对频率进展限定phase=0;即对初相角进展限定A=1.5;即对系数进展限定arg=2*pi*f*n-phase;即角度函数x=A*cos(arg);即正弦函数clf;stem(n,x);axis([0 40 -2 2]);即对图形的横纵坐标轴的范围进展限定grid;即产生二维图形title('正弦序列');xlabel('时间序号n');ylabel('振幅');axis;即产生二维图形针对实验4产生一个随机信号x=4*rand(1,100)-2;即产生长度为100且具有零均值和单位方差的正态分布的随机信号的函数表达式plot(x);即绘制二维图形axis([0,100,-2,2]);title('扫频正弦信号');xlabel('时间序号n');ylabel('振幅');grid;axis;针对实验5实现信号的噪声移除R=51;d=0.8*(rand(R,1)-0.5);即产生随机噪声m=0:R-1;即产生未污染的信号s=2*m.*(0.9.^m);即产生被噪声污染的信号x=s+d';其中对d进展了转置subplot(2,1,1);plot(m,d','r-',m,s,'g--',m,x,'b-.');即绘制图形,m,s,x xlabel('时间序号n');ylabel('振幅');legend('d[n] ','s[n] ','x[n] ');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2);plot(m,y(2:R+1),'r-',m,s,'g--');legend('y[n] ','s[n] ');xlabel('时间序号n');ylabel('振幅');针对实验6产生振幅调制信号n=0:100;m=0.4;fH=0.1; fL=0.01;即对高频和低频进展限定xH=sin(2*pi*fH*n);即产生高频信号xL=sin(2*pi*fL*n);即产生低频信号y=(1+m*xL).*xH;即产生振幅调制信号stem(n,y);grid;xlabel('时间序列n');ylabel('振幅');产生一个扫频正弦函数n=0:100;a=pi/2/100;b=0;arg=a*n.*n+b*n;即对角度进展限定x=cos(arg);正弦扫频函数表达式clf;stem(n,x);axis([0,100,-1.5,1.5]);title('扫频正弦信号');xlabel('时间序号n');ylabel('振幅');grid;axis;针对实验7产生方波和锯齿波信号t=0:30;时间范围是0到30,取样间隔为1y=2.7*square(2*pi*0.1*t,60);产生一个高度为2.7占空比为6:4的方波stem(t,y)7.2、t=0:30时间范围是0到30,取样间隔为1y=2.7*square(2*pi*0.1*t,30);产生一个高度为2.7占空比为3:7的方波stem(t,y)7.3、t=0:50时间范围是0到50,取样间隔为1y=2*sawtooth(2*pi*0.05*t);即产生一个高度为2的锯齿波stem(t,y);7.4、t=0:50;时间范围是0到50,取样间隔为1y=2*sawtooth(2*pi*0.05*t,0.5);产生一个高度为2的锯齿波stem(t,y);五、实验总结在此次实验中,我学会了用MATLAB 程序绘制图形,产生信号。
离散数学实验报告(一)一、实验目的求命题公式的真值表及其主析取范式和主合取范式二、问题分析本程序最终的目的应是求命题公式的主析取范式和主合取范式,而在有命题真值表的情况下,主析取范式和主合取范式的求解将变得十分简单。
所以,该程序的关键问题应该是求解命题公式的真值表,此后在真值表的基础上完成主析取范式和主合取范式的求解。
(一)前期分析与部分变量准备规定前提,真值表中的T/F在该程序中用布尔类型的1/0来表达。
如此,可以方便程序的编写与运算。
首先,我们要确定各个联结词的符号表达,为了方便讨论,不妨在此先令各联结词表达如下:合取(*)、析取(/)、否定(-)、单条件(%)、双条件(@)。
接着,我们就需要明确各联结词所对应符号在程序中的功能。
具体来看,合取与析取可以分别使用c++自带的&&(且)和||(或)进行布尔运算,取否定也可以直接使用!(取非)运算;而对于单条件、双条件这两个联结词来看,在c++中并无已有的运算定义,所以我们要利用函数定义的方式重新明确其含义。
而后,定义char类型数组a[]用于存储命题公式,为了方便程序的实现,我们将命题变元与联结词分开存储于char类型数组b[]和c[]中。
(二)真值表输出算法以下,我们便进入了程序的核心部分——完成真值表的计算与输出。
碍于本人c++编程知识的局限,暂时只能实现输入三个变元、无否定情况下的命题公式的真值表输出。
为了完成真值表的输出,要解决以下几个问题1. 真值表的格式与指派控制对此,我们使用三层for语句嵌套完成真值表的每一行输出。
在循环的同时,我们还需要提前定义一个布尔数组p[],以根据每一行的输出完成三个变元的指派,并将其存储于数组p[]中。
2.真值表每一行结尾的结果计算首先,我们需要定义一个布尔类型的过程存储数组x[],利用switch语句的嵌套分别判断两个联结词,使用相应的运算符(&&、||、!)和已定义的两个布尔类型函数(imp、equ),一次计算,并且将每一次的计算结果存储至x[]中,运算直至最后一步完成结果的输出。
真值计算
一实验目的
熟悉连接词的合取、吸取、单条件和双条件概念,编程求其真值。
二实验内容
从键盘输入两个命题P和Q的真值,求他们的合取、吸取、单条件和双条件的真值。
三实验步骤
打开C语言运行环境进行编程。
四源程序
合取源程序:
#include <stdio.h>
void main()
{
int a,b,c;
printf("输入a ,b的真值");
scanf("%d%d",&a,&b);
c=a&&b;
printf("c=%3d",c);
}
吸取源程序:
#include <stdio.h>
void main()
{
int a,b,c;
printf("输入a ,b的真值");
scanf("%d%d",&a,&b);
c=a||b;
printf("c=%3d",c);
}
单条件源程序:
#include <stdio.h>
void main()
{
int a,b,c;
printf("输入a ,b的真值");
scanf("%d%d",&a,&b);
c=(!a)|b;
printf("c=%3d",c);
}
双条件源程序:
#include <stdio.h>
void main()
{
int a,b,c;
printf("输入a ,b的真值");
scanf("%d%d",&a,&b);
c=(!a||b)&&(!b||a);
printf("c=%3d",c);
}
五实验结果。