欢迎来到天天文库
浏览记录
ID:25738260
大小:404.03 KB
页数:22页
时间:2018-11-22
《离散时间信号与系统实验的matlab实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、离散时间信号与系统[实验目的]1.了解信号处理的基本操作2.熟悉一些常用的序列及其应用[实验原理]我们所接触的信号大多为连续信号,为使之便于处理,往往要对其进行采样,对信号抽样并保证其能完全恢复,对抽样频率有一定的限制。基本的离散序列的定义如下:1.单位采样序列 2.单位阶跃序列 3.实指数序列,;a为实数4.复数指数序列 ,5.正余弦序列,6.周期序列,[实验内容]1.用MATLAB实现函数impseq(n0,n1,n2),使函数实现,。函数定义:function[x,n]=impseq(n0,n1,n2)if
2、(n1>n2
3、
4、n0>n2
5、
6、n07、tion[x,n]=stepseq(n0,n1,n2)if(n0>n28、9、n010、11、n1>n2)error('parametererror');end;forn=1:n2-n1+1if(n+n1-112、%函数实现序列function[x,n]=f1()forn=1:9x(1,n)=n;x(2,n)=(0.9).^(n);end;%实现序列 函数functionf2()fork=1:10x=exp((2+3*j).*k);disp(x);end;%实现序列的函数functionf3()fork=0:10x=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);disp(x);end;%实现序列d中要求的函数functionf4(n)while(1)n=n-11;if(n<0)break;end;end;n=n+11;disp(n);fork=0:10x13、(1,k+1)=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);end;n=n+1;disp(x(1,n));A:产生 运行结果:f1ans=1.00002.00003.00004.00005.00006.00007.00000.90000.81000.72900.65610.59050.53140.47838.00009.00000.43050.3874B产生 运行结果:f2-7.3151+1.0427i52.4235-15.2556i-3.6758e+002+1.6626e+002i2.5155e+003-1.59914、5e+003i-1.6733e+004+1.4324e+004i1.0747e+005-1.2223e+005i-6.5870e+005+1.0062e+006i3.7693e+006-8.0471e+006i-1.9182e+007+6.2796e+007i7.4837e+007-4.7936e+008iC、产生x(n)=3cos(0.1πn+π/3)+2sin(0.5πn)0<=n<=10运行结果:f31.50002.6237-0.3136-3.2202-2.0074-0.5981-2.9344-4.9836-2.7406-0.2294-1.50004.MATLAB中可用算术运算符“15、+”实现信号相加,但和的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能运用“+”了。试用MATLAB写出任意序列相加的函数sigadd,其定义如下:function[y,n]=sigadd(x1,n1,x2,n2)if(n1>=n2)min=n2;max=n1;elsemin=n1;max=n2;end;forn=1:miny(n)=x1(n)+x2(n);end;if(max-min)>1forn=min
7、tion[x,n]=stepseq(n0,n1,n2)if(n0>n2
8、
9、n010、11、n1>n2)error('parametererror');end;forn=1:n2-n1+1if(n+n1-112、%函数实现序列function[x,n]=f1()forn=1:9x(1,n)=n;x(2,n)=(0.9).^(n);end;%实现序列 函数functionf2()fork=1:10x=exp((2+3*j).*k);disp(x);end;%实现序列的函数functionf3()fork=0:10x=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);disp(x);end;%实现序列d中要求的函数functionf4(n)while(1)n=n-11;if(n<0)break;end;end;n=n+11;disp(n);fork=0:10x13、(1,k+1)=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);end;n=n+1;disp(x(1,n));A:产生 运行结果:f1ans=1.00002.00003.00004.00005.00006.00007.00000.90000.81000.72900.65610.59050.53140.47838.00009.00000.43050.3874B产生 运行结果:f2-7.3151+1.0427i52.4235-15.2556i-3.6758e+002+1.6626e+002i2.5155e+003-1.59914、5e+003i-1.6733e+004+1.4324e+004i1.0747e+005-1.2223e+005i-6.5870e+005+1.0062e+006i3.7693e+006-8.0471e+006i-1.9182e+007+6.2796e+007i7.4837e+007-4.7936e+008iC、产生x(n)=3cos(0.1πn+π/3)+2sin(0.5πn)0<=n<=10运行结果:f31.50002.6237-0.3136-3.2202-2.0074-0.5981-2.9344-4.9836-2.7406-0.2294-1.50004.MATLAB中可用算术运算符“15、+”实现信号相加,但和的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能运用“+”了。试用MATLAB写出任意序列相加的函数sigadd,其定义如下:function[y,n]=sigadd(x1,n1,x2,n2)if(n1>=n2)min=n2;max=n1;elsemin=n1;max=n2;end;forn=1:miny(n)=x1(n)+x2(n);end;if(max-min)>1forn=min
10、
11、n1>n2)error('parametererror');end;forn=1:n2-n1+1if(n+n1-112、%函数实现序列function[x,n]=f1()forn=1:9x(1,n)=n;x(2,n)=(0.9).^(n);end;%实现序列 函数functionf2()fork=1:10x=exp((2+3*j).*k);disp(x);end;%实现序列的函数functionf3()fork=0:10x=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);disp(x);end;%实现序列d中要求的函数functionf4(n)while(1)n=n-11;if(n<0)break;end;end;n=n+11;disp(n);fork=0:10x13、(1,k+1)=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);end;n=n+1;disp(x(1,n));A:产生 运行结果:f1ans=1.00002.00003.00004.00005.00006.00007.00000.90000.81000.72900.65610.59050.53140.47838.00009.00000.43050.3874B产生 运行结果:f2-7.3151+1.0427i52.4235-15.2556i-3.6758e+002+1.6626e+002i2.5155e+003-1.59914、5e+003i-1.6733e+004+1.4324e+004i1.0747e+005-1.2223e+005i-6.5870e+005+1.0062e+006i3.7693e+006-8.0471e+006i-1.9182e+007+6.2796e+007i7.4837e+007-4.7936e+008iC、产生x(n)=3cos(0.1πn+π/3)+2sin(0.5πn)0<=n<=10运行结果:f31.50002.6237-0.3136-3.2202-2.0074-0.5981-2.9344-4.9836-2.7406-0.2294-1.50004.MATLAB中可用算术运算符“15、+”实现信号相加,但和的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能运用“+”了。试用MATLAB写出任意序列相加的函数sigadd,其定义如下:function[y,n]=sigadd(x1,n1,x2,n2)if(n1>=n2)min=n2;max=n1;elsemin=n1;max=n2;end;forn=1:miny(n)=x1(n)+x2(n);end;if(max-min)>1forn=min
12、%函数实现序列function[x,n]=f1()forn=1:9x(1,n)=n;x(2,n)=(0.9).^(n);end;%实现序列 函数functionf2()fork=1:10x=exp((2+3*j).*k);disp(x);end;%实现序列的函数functionf3()fork=0:10x=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);disp(x);end;%实现序列d中要求的函数functionf4(n)while(1)n=n-11;if(n<0)break;end;end;n=n+11;disp(n);fork=0:10x
13、(1,k+1)=3*cos(0.1*pi*k+pi/3)+2*sin(0.5*pi*k);end;n=n+1;disp(x(1,n));A:产生 运行结果:f1ans=1.00002.00003.00004.00005.00006.00007.00000.90000.81000.72900.65610.59050.53140.47838.00009.00000.43050.3874B产生 运行结果:f2-7.3151+1.0427i52.4235-15.2556i-3.6758e+002+1.6626e+002i2.5155e+003-1.599
14、5e+003i-1.6733e+004+1.4324e+004i1.0747e+005-1.2223e+005i-6.5870e+005+1.0062e+006i3.7693e+006-8.0471e+006i-1.9182e+007+6.2796e+007i7.4837e+007-4.7936e+008iC、产生x(n)=3cos(0.1πn+π/3)+2sin(0.5πn)0<=n<=10运行结果:f31.50002.6237-0.3136-3.2202-2.0074-0.5981-2.9344-4.9836-2.7406-0.2294-1.50004.MATLAB中可用算术运算符“
15、+”实现信号相加,但和的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能运用“+”了。试用MATLAB写出任意序列相加的函数sigadd,其定义如下:function[y,n]=sigadd(x1,n1,x2,n2)if(n1>=n2)min=n2;max=n1;elsemin=n1;max=n2;end;forn=1:miny(n)=x1(n)+x2(n);end;if(max-min)>1forn=min
此文档下载收益归作者所有