实验一  离散信号和系统
一 单位脉冲序列
clear all;clc;          %清除函数和屏幕 x1n=zeros(1,11);
n=0:10;ns=5;         %n为0到10之间的整数 for i=0:10     if i==ns
x1n(i+1)=1;     else   x1n(i+1)=0;
end               %结束if语句 end                  %结束for语句
stem(n,x1n);           %生成n,x1(n)的关系图形
二  单位阶跃序列 程序如下: clear all;clc; x2n=zeros(1,11); n=0:10;ns=3;
for i=0:10    %构成0到10之间的循环     if i-ns>=0
x2n(i+1)=1;     else x2n(i+1)=0;     end end
stem(n,x2n);
三(1) 生成复指数实部图形程序
clear all;clc; x3n=zeros(1,11); n=0:10;a=-0.2;w=0.5;
for i=0:10    %构成0到10之间的循环     if i>=0
x3n=exp((a+j*w)*n);     end end
stem(n,real(x3n));
(2)生成复指数虚部图形程序
clear all;clc; x3n=zeros(1,11); n=0:10;a=-0.2;w=0.5; for i=0:10
if  i>=0    %条件是i大于或等于0         x3n=exp((a+j*w)*n);     end   end
stem(n,imag(x3n));
四  差分方程的通用递推程序 程序如下:
a=[1,0.1,0.15,-0.225];       % a为滤波器传递函数的分母系数向量
b=[3,7,1];                %b为滤波器传递函数的分子系数向量 u=exp(0.1*[1:20]);       %n的范围为由0递增到20
y=filter(b,a,u);           %计算输入信号u的滤波输出y stem(y);       %生成波形
实验二   时域离散信号的产生及时域处理
1.序列的相加和相乘
x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6]; x2=[2,2,0,0,0,-2,-2];n2=[2:8];
n=[-2:8];     %求取新信号的时间起始及中止位置 xa1=zeros(1,11);
xa2=xa1;
for i=1:9     %for循环的条件
xa1(i)=x1(i);     %把x1(i)的值赋给 xa1(i)
end for i=1:7
xa2(i+4)=x2(i);
end
ya=xa1+xa2;        %两个序列逐点相加 yp=xa1.*xa2;        %两个序列逐点相乘 subplot(4,1,1);stem(n,xa1,'.');
line([n(1),n(end)],[0,0]);    %建立横坐标x轴 ylabel('xa1');             %给y轴命名 subplot(4,1,2);stem(n,xa2,'.');
line([n(1),n(end)],[0,0]);ylabel('xa2'); subplot(4,1,3);stem(n,ya,'.'); line([n(1),n(end)],[0,0]);ylabel('ya'); subplot(4,1,4);stem(n,yp,'.'); line([n(1),n(end)],[0,0]);ylabel('yp');
2.序列的移位和周期延拓运算
clear all;clc;
N=24;M=8;m=3;
n=0:N-1;
x1=0.8.^n;                              %生成指数序列 x2=stepseq(0,0,N-1)-stepseq(M,0,N-1);     %形成矩形序列RM(n) xn=x1.*x2; xm=zeros(1,N);
for k=m+1:m+M
xm(k)=xn(k-m);                    %产生序列移位x(n-3) end;
xc=xn(mod(n,8)+1);                 %产生x(n)的周期延拓x((n))8
xcm=xn(mod(n-m,8)+1);             %产生序列移位x(n-3)的周期延拓x((n-3))8 subplot(2,2,1);stem(n,xn,'.');ylabel('x(n)');title('x(n)的周期延拓'); subplot(2,2,2);stem(n,xm,'.');ylabel('x(n--m)');title('x(n)的循环移位'); subplot(2,2,3);stem(n,xc,'.');ylabel('x(mod(n,b))');
subplot(2,2,4);stem(n,xcm,'.');ylabel('x(mod((n-m),b))');
实验四  卷积计算
1.LTI连续系统的卷积计算 程序如下:
u=ones(1,10);
h=exp(-0.1*[1:15]); dt=0.5;
y=conv(u,h);     %求u和h的卷积
t=dt*([1:length(y)]-1);    %确定横坐标范围 stem(t,y,'.');       %画图
2.离散序列的卷积计算
计算下列卷积,并图示个序列及卷积结果。
(1) y1(n)=x1(n)*h1(n),  x1(n)=0.9nR20(n),h1(n)=R10(n)。
(2) y2(n)=x2(n)*h2(n),  x1(n)=0.9n-5R20(n-5),h1(n)=R10(n)。
程序如下:
n1=0:19;
x12=[(n1>=0&n1<20)];     %生成矩阵序列R20(n) x1=0.9.^n1;
x1n=x1.*x12; n11=0:9;
h1n=[(n11>=0&n11<10)];       %得到h1(n)  h2n=h1n; n2=0:(19+5); x2n=zeros(1,25);
for i=1:20
x2n(i+5)=x1n(i);       %由x1(n)得到x2(n) end
dt=1;
y1n=conv(x1n,h1n);          %求x1(n)与h1(n)的卷积y1(n) t1=dt*([1:length(y1n)]-1);       %建立横坐标轴t1 y2n=conv(x2n,h2n);
t2=dt*([1:length(y2n)]-1);
subplot(3,2,1);stem(n1,x1n,'.');ylabel('x1(n)'); subplot(3,2,2);stem(n2,x2n,'.');ylabel('x2(n)'); subplot(3,2,3);stem(n11,h1n,'.');ylabel('h1(n)'); subplot(3,2,4);stem(n11,h2n,'.');ylabel('h2(n)'); subplot(3,2,5);stem(t1,y1n,'.');ylabel('y1(n)'); subplot(3,2,6);stem(t2,y2n,'.');ylabel('y2(n)');
实验七    离散傅里叶变换(DFT)
实验目的
掌握基本序列的离散傅里叶变换的MATLAB计算;验证N 点DFT的物理意义。
实验内容:
1.基本序列的离散傅里叶变换计算 已知以下序列
复正弦序列      x1(n)ej8nRN(n)n)RN(n) n)RN(n) 余弦序列        x2(n)cos(正弦序列        x3(n)cos(88分别对N=8和N=16计算以上序列的N点DFT,并绘出幅频特性曲线。
程序如下:
N=15; n=0:N;
x1=exp((j*pi/8).*n); x2=[(n>=0)&(n<=N)]; x1n=x1.*x2;
x2n=cos((pi/8).*n).*x2; x3n=sin((pi/8).*n).*x2;
X1k=fft(x1n,16);         %xx1n的16点DFT X2k=fft(x2n,16); X3k=fft(x3n,16);
subplot(3,3,1);stem(n,real(x1n),'.');
hold on;                    %实部与虚部在同一坐标上显示出 stem(n,imag(x1n));
subplot(3,3,2);stem(n,x2n,'.'); subplot(3,3,3);stem(n,x3n,'.');
subplot(3,3,4);stem(n,abs(X1k),'.');       %X1k幅度与n 的关系图 subplot(3,3,5);stem(n,abs(X2k),'.'); subplot(3,3,6);stem(n,abs(X3k),'.');
i=0:7;
x3=exp((j*pi/8).*i); x4=[(i>=0)&(i<=7)]; x1i=x3.*x4;
x2i=cos((pi/8).*i).*x4; x3i=sin((pi/8).*i).*x4; X1i=fft(x1i,8); X2i=fft(x2i,8); X3i=fft(x3i,8);
subplot(3,3,7);stem(i,abs(X1i),'.'); subplot(3,3,8);stem(i,abs(X2i),'.'); subplot(3,3,9);stem(i,abs(X3i),'.');
实验九    香农公式的分析
echo on;
pn0_db=[-20:0.1:30]; pn0=10.^(pn0_db./10);
capacity=3000*log2(1+pn0/3000); pause;      %程序暂停,按回车键继续
clf;
semilogx(pn0,capacity);  %用横轴刻度以10为底的常用对数,纵轴为线性刻度来做图 title('capacity vs. P/N0 in an AWGN Channel'); xlabel('P/N0');
ylabel('Capacity (Bits/second)');
2.编写程序绘出P/N0=25dB是得加性高斯白噪声信道容量与带宽W间的函数关系曲线。
程序如下:
echo on; pn0_db=25;
pn0=10.^(pn0_db./10); w=0:100000;
capacity=w.*log2(1+pn0./w); pause; clf
semilogx(w,capacity);
title('capacity vs. P/N0 in an AWGN Channel'); xlabel('P/N0');
ylabel('Capacity (Bits/second)');
实验十  双边带(DSB)调制
实验内容:
被调信号m(t)=u(t)- u(t-t0/3)-2[ u(t-t0/3)- u(t-2t0/3)],用m(t)调制载波c(t)=cos(2fct),得到的调制信号用u(t)表示,设to=0.15s,fc=250HZ。 范例:变成作出m(t),c(t) 和u(t)的图形。
echo on; t0=.15; ts=0.001;
fc=250;
fs=1/ts; t=[0:ts:t0];
%message signal
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];   %得到函数m(t) c=cos(2*pi*fc.*t);        % 载波函数c(t) u=m.*c;
U=fft(u);            %对u(t) 进行傅里叶变换 M=fft(m);           %对m(t)进行傅里叶变换
UU=abs(U);         %得到u(t)的傅里叶变换结果幅度变换波形 MM=abs(M);        %得到m(t)的傅里叶变换结果幅度变换波形
x=fftshift(UU);       %把u(t)的傅里叶变换结果幅度变换波形移到中间 y=fftshift(MM);      %把m(t)的傅里叶变换结果幅度变换波形移到中间 pause; clf;
subplot(3,2,1);
plot(t,m(1:length(t))); xlabel('Time');
title('The messega signal'); pause; subplot(3,2,2); plot(t,c(1:length(t))); xlabel('Time'); title('The carrier'); pause;
subplot(3,2,3);
plot(t,u(1:length(t))); xlabel('Time');
title('The modulated signal'); pause;
subplot(3,2,4);
plot(t,x(1:length(t))); xlabel('Time'); title('The a signal'); pause;
subplot(3,2,5); plot(t,y(1:length(t))); xlabel('Time');
title('The a  signal');