实验一离散时间信号的分析_精品文档Word下载.docx
《实验一离散时间信号的分析_精品文档Word下载.docx》由会员分享,可在线阅读,更多相关《实验一离散时间信号的分析_精品文档Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
3.序列的基本运算
l移位y(n)=x(n-m)
l反褶y(n)=x(-n)
l和
l积
l标乘y(n)=mx(n)
l累加
l差分运算
4.离散傅里叶变换的相关概念
l定义
l两个性质
1)
2)当x(n)为实序列时,的幅值在区间内是偶对称函数,相位是奇对称函数。
5.Z变换的相关概念
l定义(双边Z变换)
(单边Z变换)
四、实验内容与步骤
1.离散时间信号(序列)的产生
利用MATLAB语言编程产生和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形表示。
1.单位取样序列的产生函数
function[x,n]=impseq(n0,n1,n2)
%产生x(n)=delta(n-n0);
n1<
=n,n0<
=n2;
%[x,n]=impseq(n0,n1,n2)
if((n0<
n1)|(n0>
n2)|(n1>
n2))
error('
参数必须满足n1<
=n0<
=n2'
)
end
n=[n1:
n2];
%x=[zeros(1,(n0-n1)),1,zeros(1,(n2-n0))];
x=[(n-n0)==0];
2.单位阶跃序列的产生函数
function[x,n]=stepseq(n0,n1,n2)
%产生x(n)=u(n-n0);
%[x,n]=stepseq(n0,n1,n2)
error('
%x=[zeros(1,(n0-n1)),ones(1,(n2-n0+1))];
x=[(n-n0)>
=0];
Matlab产生各种常见序列的程序
n=[-5:
5];
x1=impseq(0,-5,5);
subplot(2,2,1);
stem(n,x1);
title('
单位取样序列'
);
xlabel('
n'
ylabel('
x(n)'
n=[-3:
10];
x2=stepseq(0,-3,10);
subplot(2,2,2);
stem(n,x2);
单位阶跃序列'
n=[-10:
x3=(0.5).^n;
subplot(2,2,3);
stem(n,x3);
实指数序列'
n=[0:
20];
x4=sin(0.3*n);
subplot(2,2,4);
stem(n,x4);
正弦序列'
Matlab产生复指数序列的程序
1:
alpha=-0.1+0.5j;
x=exp(alpha*n);
stem(real(x));
实部'
stem(imag(x));
虚部'
stem(abs(x));
振幅'
stem(n,(180/pi)*angle(x));
相位'
Matlab产生随机离散信号的程序
n=[1:
x=rand(1,10);
figure;
stem(n,x);
随机序列'
grid
2.序列的运算
(1)利用MATLAB语言编程实现信号平滑运算。
程序
r=65;
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-.'
n'
legend('
d[n]'
s[n]'
x[n]'
x1=[00x];
x2=[0x0];
x3=[x00];
y=(x1+x2+x3)/3;
subplot(2,1,2);
plot(m,y(2:
r+1),'
y[n]'
(2)利用MATLAB语言编程实现信号的调制。
Fm=10;
Fc=100;
Fs=500;
k=0:
199;
t=k/Fs;
x=sin(2*pi*Fm*t);
y=x.*cos(2*pi*Fc*t);
X=fft(x,256);
Y=fft(y,256);
plot(x);
t(s)'
x'
原信号'
plot(X);
plot([-128:
127],fftshift(abs(X)));
w'
X(jw)'
原信号频谱'
plot(y);
y'
调制信号'
plot(Y);
127],fftshift(abs(Y)));
Y(jw)'
已调信号频谱'
(3)利用MATLAB语言编程实现信号卷积运算。
序列卷积的产生函数
function[y,ny]=conv_m(x,nx,h,nh)
%信号处理的卷积程序
%[y,ny]=conv_m(x,nx,h,nh)
%y=卷积结果
%ny=y的基底(support)
%x=基底nx上的第一个信号
%nx=x的基底
%h=基底nh上的第二个信号
%nh=h的基底
nyb=nx
(1)+nh
(1);
nye=nx(length(x))+nh(length(h));
ny=[nyb:
nye];
y=conv(x,h);
Matlab实现线性卷积的程序
x=[00.511.50];
nx=0:
4;
h=[11100];
nh=0:
[y,ny]=conv_m(x,nx,h,nh);
stem(nx,x);
序列x'
stem(nh,h);
序列h'
h(n)'
stem(ny,y);
两序列卷积'
);
y(n)'
(4)利用MATLAB语言编程实现信号离散傅立叶的正反变换。
离散傅立叶正变换的产生函数
function[Xk]=dft(xn,N)
N-1];
k=n;
WN=exp(-j*2*pi/N);
nk=n'
*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
离散傅立叶反变换的产生函数
function[Xk]=idft(xn,N)
WNnk=WN.^(-nk);
Xk=xn*WNnk/N;
(5)利用MATLAB语言编程实现信号的圆周移位,圆周卷积,验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。
functionm=sigmod(n,N);
m=rem(n,N);
m=m+N;
m=rem(m,N);
functiony=cirshift(x,m,N);
iflength(x)>
N
error('
Nmustbegreaterthenlength(x)'
x=[xzeros(1,N-length(x))];
n=sigmod(n-m,N);
y=x(n+1);
Matlab实现圆周移位的程序
M=6;
N=11;
x=15*0.4.^n;
y=cirshift(x,M,N);
原序列波'
stem(n,y);
圆周移位序波形'
圆周卷积
functiony=circonvt(x1,x2,N)
iflength(x1)>
length(x1)isnotgreatthanN'
iflength(x2)>
length(x2)isnotgreaterthanN'
x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
m=[0:
x2=x2(mod(-m,N)+1);
H=zeros(N,N);
forn=1:
N;
H(n,:
)=cirshift(x2,n-1,N);
y=x1*H'
Matlab实现圆周卷积的程序
x1=[2,4,3];
x2=[4351];
disp('
N=7'
)
N=7;
y=circonvt(x1,x2,N)
subplot(3,1,1);
stem(x1);
x1(n)'
subplot(3,1,2);
stem(x2);
x2(n)'
subplot(3,1,3);
stem(y);
圆周卷积'
(6)验证一个周期实序列奇偶部分的DFT与此序列本身的DFT之间的关系。
function[x1,x2]=circevod(x)
ifany(imag(x)~=0)
不是实序列0'
N=length(x);
n=0:
(