数字信号分析实验报告1
********************************
《信号分析与处理》
实 验 报 告
实验名称:信号产生 班 级:电气研-14 学 号:[1**********]14 姓 名:刘家利 联系方式:[1**********]
一. 实验内容:
1. 产生至少三种典型连续信号, 三种典型离散序列(自选)。
2. 绘制图形,在同一张图中出现两种时间连续信号, 两种时间离散信号。分别标注横纵坐标, 各信号名称。 图名为“信号的产生—本人姓名” 3. 已知信号 x [k ]=[0, 0, 1, 2, 3, 3, 3, 3, 3, 0]-4≤k ≤5,编写程序 f (k ) =x (-k +2) δ(-k +1) ,计算并绘制f (k ) 并确定其长度。( 其中 δ(k ) 为单位冲激信号)
二. 实验方案:
1. (1)利用subplot 函数将窗口分割为六个小窗口即 2x3。
(2)利用plot 函数将函数图行描出。
(3)利用stem 函数将函数图行离散化。
(4) 利用title 对函数标题。
2. (1)定义自变量的范围,很重要,不同的函数变化快慢不
一样,这样不同曲线幅值相差很大,看起来不明显。
(2)定义四个函数。
(3)利用stem 函数将函数图行离散化。
(4)利用xlabel ,title ,legend 对函数标注,标题,注释。
3. (1)根据要求先对函数平移取反求得f (-k+2)。
(2)求得u (k )函数并求得u (-k+1)。
(3)确定相乘后n 的大小即自变量范围,然后相乘。
(4)利用xlabel ,title ,legend 对函数标注,标题,注释。
三. 仿真结果分析总结
实验图形一
实验图形二
实验图形三
总结:对于两离散序列的乘积,实验结果与理论分析一致。对于本题3的离散序列相乘需要平移,反褶,求得相应的序列再相乘,而序列的相乘需要先确定自变量n 的范围然后矩阵相乘。对于实验1,2学会了title ,legend ,还有stem 函数的使用。
附录.
1. 源程序及说明一
x=0:0.1:4*pi; % 定义x 的范围及步长 subplot(2, 3, 1); plot(x, sin(2*x)); % 一个窗口分割成6个图形,此为11图形 subplot(2, 3, 2); plot(x, sin(4*x)); % 一个窗口分割成6个图形,此为12图形 subplot(2, 3, 3); plot(x, x); % 一个窗口分割成6个图形,此为13图形 n1=0:5;y1=[1,1,1,1,1,1];
subplot(2, 3, 4); stem(n1,y1);
title('y1序列'); % 一个窗口分割成6个图形,此为21图形 n2=0:5;y2=[1,2,3,4,5,6];
subplot(2, 3, 5); stem(n1,y2); % stem为离散化函数 title('y2序列'); % 一个窗口分割成6个图形,此为22图形 n3=-8*pi:0.5:8*pi;y3=1*(sin(n3)./n3);
subplot(2, 3, 6);stem(n3,y3);
title('y3序列'); % 一个窗口分割成6个图形,此为23图形
2.源程序及说明二
x=-3*pi:0.2:3*pi; % 定义x 的范围及步长 y1=4*sin(x); % 定义函数的y1,y2,y3,y4. y2=0.001*exp(-x);
y3=8*cos(x);
y4=0.001*exp(x);
stem(x,y1,'g'); % 离散化函数的y1 hold on
stem(x,y2,'r'); % 离散化函数的y2 hold on
plot(x,y3,'--*',x,y4); % 离散化函数的y3 xlabel('x'); %写出x 坐标标示 ylabel('y'); %写出y 坐标标示 title('信号的产生-刘家利'); %写出此图形代表标题 legend('4sin(x)','0.001e^{-x}','8cos(x)','0.001e^{x}'); grid on %绘上网格
3. 源程序及说明三
n5=-4:5; % 已知n5的范围 x=[0,0,1,2,3,3,3,3,3,0]; % 已知x 的值 x11=fliplr(x);n11=-fliplr(n5); % 做反褶变换
n12=n11+2; x12=x11; % 做平移变换
n0=0:20; % 定义单位阶跃序列的范围,理论上inf 大这里取20 u=ones(1,length(n0)); % 定义单位阶跃序列 x14=fliplr(u);n14=-fliplr(n0); % 单位阶跃反褶 n15=n0+1; x15=x14; % 单位阶跃平移
n=min(min(n12),min(n15)):max(max(n15),max(n12)); % 确定n 范围 y1=zeros(1,length(n));y2=y1; %定义两个零矩阵 y1(find((n>=min(n12))&(n=min(n15))&(n
subplot(1,1,1),stem(n,y);title('f(k)=x(-k+2)u(-k+1)'); %对两个零矩阵赋值 %对两个零矩阵相乘操作 %matlab输出相乘后的序列