当前位置:文档之家› 常见离散信号产生和实现

常见离散信号产生和实现

数字信号处理实验报告实验1 常见离散信号产生和实现一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB 在时域中产生一些基本的离散时间信号。

二、实验原理MATLAB 语言提供了一系列函数用来产生信号,如exp, sin, cos, square, sawtooth ,ones, zeros 等函数。

1.基本信号序列1) 单位抽样序列⎩⎨⎧=01)(n δ00≠=n n 在MATLAB 中可以利用zeros()函数实现。

x=[1 zeros(1, n-1)]示范程序: % Program P1_1% Generation of a Unit Sample Sequence clf;% Generate a vector from -10 to 20 n = -10:20;% Generate the unit sample sequence u = [zeros(1,10) 1 zeros(1,20)]; % Plot the unit sample sequence stem(n,u);xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence'); axis([-10 20 0 1.2]);如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ 0≠=n k n 2) 单位阶跃序列⎩⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones()函数实现。

);,1(N ones x =3) 实指数序列R a n a n x n∈∀=,)(MATLAB 实现:na x N n .^1:0=-=4) 复指数序列n e n x nj ∀=+)()(ωσMATLAB 实现:))0exp((1:0n w j lu x N n **+=-=5) 随机序列MATLAB 提供了两种随机信号:rand(1,N) 产生[0,1]上均匀分布的随机矢量。

randn(1,N) 产生均值为0,方差为1的高斯随机序列,即白噪声序列。

2.基本周期波形1) 方波MATLAB 工具箱函数square 可以产生方波;t=0:0.1*pi:6*pi; y=square(t);axis([0 7*pi -1.5 1.5]);plot(t,y); xlabel(‘时间 t ’); ylabel(‘幅度y ’); 2) 正弦波)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=3) 锯齿波工具箱函数sawtooth 函数可以产生锯齿波Fs=10000;t=0:1/Fs:1.5; %抽样长度1.5s, 抽样频率为10kHz x=sawtooth(2*pi*50*t); %信号频率为50Hz plot(t, x);axis()[0 0.2 -1 1]; %画出0.2秒的波形3.基本非周期波形工具箱函数chirp 能产生一种扫射频率信号,其特点是信号的瞬时频率随时间按照一定规律变化t=0:1/1000:2 %抽样频率1kHz, 抽样时间2s.x=chirp(t, 0.1, 150) %0时刻为DC 信号,1s 时频率为150Hz 。

specgram(x, 256, 1000, 256, 250); 4.sinc 信号MATLAB 实现: t=linspace(-5,5); x=sinc(t); plot(t,x); 5.序列的操作1) 信号加 x(n)=x1(n)+x2(n) MATLAB 实现:x=x1+x2;注意:x1和x2序列应该具有相同的长度,位置对应,才能相加。

2) 信号乘 x(n)=x1(n)*x2(n) MATLAB 实现:x=x1.*x2; %数组乘法 3) 改变比例 y(n)=k*x(n) MATLAB 实现: y=k*x;4) 折叠 y(n)=x(-n); MATLAB 实现: y=fliplr(x);5) 抽样和 ∑==21)(n n n n x yMATLAB 实现:y=sum(x(n1:n2));6) 抽样积 ∏==21)(n n n n x yMATLAB 实现:y=prod(x(n1:n2));7) 信号能量 2|)(|∑∞-∞==n n x ExMATLAB 实现:Ex=sum(abs(x).^2);8) 信号功率 21|)(|1∑-==N n n x N PxMATLAB 实现:Px=sum(abs(x).^2)/ N;实验和程序: 1) 单位抽样序列function uss(n)%构造函数N=0:n-1u = [1, zeros(1,n-1)];%构造矩阵stem(N,u);xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence');axis([-10 n 0 1.2]);右图为取n为10的图形2) 单位阶跃序列function jieyue(n)%构造函数N = -10:n-1;u = [zeros(1,10) ones(1,n)];stem(N,u);xlabel('Time indexn');ylabel('Amplitude');title('Unit jump Sequence');axis([-10 n 0 1.2]);右图为取n为10的图形3) 实指数序列function index(z1,N)%构造函数% n1=0:N;n=0:N/2;x=z1.^n;stem(n,x);xlabel('Time indexn');ylabel('Amplitude');右图为取z1=2,N=30的图形4) 复指数序列function findex(z1,z2)%构造函数Time index nAmplitudeUnit Sample SequenceTime index nAmplitudeUnit jump Sequence4Time index n Amplitude5Time index nAmplitudeN=10;n=0:N/2;x=exp((z1+j*z2).*n);stem(n,abs(x));xlabel('Time index n');ylabel('Amplitude'); 右图为z1=2,z2=3的图形5) 方波function square1(g)%G为方波的占空比t=0:0.1:6*pi;y=square(t,g);plot(t,y);xlabel('时间 t');ylabel('幅度y');axis([0 7*pi -1.5 1.5]); %要放在最后才可以正确显示右图分别为G=70,G=30的图形6)正弦波function sin1(N,A,Fs,f,Q)%N为显示的范围,A为幅度,%FS为抽样频率,f为模拟信号的频率,Q为初相位n=0:N/2;x=A*sin(2*pi*f*n/Fs+Q)stem(n,x);xlabel('Time indexn');ylabel('Amplitude');axis([0 N/2 -2.5 2.5]);右图为sin1(60,2,1000,50,10)的图形7)锯齿波时间 t幅度y时间 tTime index nAmplitudefunction saw(f,F)%f 为锯齿波的频率,F 为间隔 %其中F 不能取太大,不易观 察图形 t=0:1/F:2;y=sawtooth(2*pi*f*t); plot(t,y);axis([0 2 -1.2 1.2]); 右图为saw(10,100)的图形 8)基本非周期波形%利用chirp 来实现t=0:1/500:2 %抽样频率500Hz, 抽样时间2s.x=chirp(t, 0.1, 150) %0时刻为DC 信号,1s 时频率为150Hz 。

specgram(x, 256, 500, 256, 250); 右图分别为抽样频率为500与10000的图形 9) sinc 信号function sinc1(t1,t2,A)%[t1,t2]为定义域A为幅度t=linspace(t1,t2);x=A*sinc(t);plot(t,x);右图为[t1,t2]=[-10,10],A=2的图形10)序列相加 function sequenceplus(x1,x2) n1=length(x1); n2=length(x2);TimeF r e q u e n cy50100150200250TimeF r e q u e n cy50100150200250-20-101020-40-2002040n=-n1/2:(n1/2-1);subplot(221)stem(n,x1)subplot(222)stem(n,x2)if(n1==n2) % x1,x2 的长度必须相同x=x1+x2;subplot(223)stem(n,x);axis([-n1 n1 0 2])else error('x1与x2不一样长')end右图为x3=[ones(1,20),ones(1,10),ones(1,10)];x4=[zeros(1,20),ones(1,10),zeros(1,10)];sequenceplus(x3,x4)的图形如果输入x3=[ones(1,10),ones(1,10),ones(1,10)];x4=[zeros(1,20),ones(1,10),zeros(1,10)];则会显示x1与x2不一样长11)序列相乘function sequencenmultiply(x1,x2)n1=length(x1);n2=length(x2);n=-n1/2:(n1/2-1);subplot(221)stem(n,x1)subplot(222)stem(n,x2)if(n1==n2) % x1,x2的长度必须相-20-1001020同x=x1.*x2; subplot(223) stem(n,x);axis([-n1 n1 0 2])else disp('error x1与x2不一样长') end右图为x3=[ones(1,20),ones(1,10),ones(1,10)];x4=[zeros(1,20),ones(1,10),zeros(1,10)]; sequenceplus(x3,x4)的图形 如果输入x3=[ones(1,10),ones(1,10),ones(1,10)]; x4=[zeros(1,20),ones(1,10),zeros(1,10)]; 则会显示x1与x2不一样长 12)改变比例function changerate(x,k) n1=length(x); %x 为需要改变的序列 n=-n1/2:(n1/2-1); ,k 为改变的比例x1=k.*x; stem(n,x1);axis([-n1 n1 0 k+1]); 右图为x=[ones(1,20),ones(1,10),ones(1,10)];K=1.5的图形 13)折叠function pucker(x)n1=length(x);n=-n1/2:(n1/2-1);%这里的n 必须关于0两边对称 x1=fliplr(x); ,不然就会出错 subplot(211)-40-30-20-1010203040stem(n,x)%画出原序列axis([-n1 n1 0 1.2]);subplot(212)stem(n,x1);%画出折叠后的序列axis([-n1 n1 0 1.2]);14)抽样和函数n=0:24;x1=[zeros(1,5),ones(1,3),zeros(1,5),ones(1,6),zeros(1,6)];x=sum(x1)计算结果为x =915)序列积n=0:25;x1=rand(1,26)x=prod(x1)计算结果为x1 =Columns 1 through 60.9501 0.2311 0.6068 0.4860 0.8913 0.7621Columns 7 through 120.4565 0.0185 0.8214 0.4447 0.6154 0.7919Columns 13 through 180.9218 0.7382 0.1763 0.4057 0.9355 0.9169Columns 19 through 240.4103 0.8936 0.0579 0.3529 0.8132 0.0099Columns 25 through 260.1389 0.2028x =4.6704e-01216) 序列能量x3=[ones(1,15),ones(1,20),ones(1,16)];p=sum(abs(x3).^2)计算结果为p =5117)信号功率x1=[zeros(1,5),-2*ones(1,3),zeros(1,5),5*ones(1,6),zeros(1,6)];N=length(x1)p=sum(abs(x1).^2)/N计算结果为N =25p =6.4800四、讨论复指数序列的性质。

相关主题