📄 frequencyspectrum.txt
字号:
n=[-64:64];
y=sin(pi*n/25);
subplot(2,1,1);
plot(n,y);
Y=fft(y); %对正弦信号fft变换
subplot(2,1,2);
plot(n,abs(Y));
ylabel('Y(k)');
title('信号频谱分布');
d,锯齿波
Fs=500;
t=0:1/Fs:0.3;
x=sawtooth(2*pi*50*t);
plot(t,x);
axis([0 0.3 -1 1]);
b,矩形脉冲
function[x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
stem(n,x)
a单位脉冲序列
function[x,n]=impseq(n0,n1,n2);
n=[n1:n2];
x=[(n-n0)==0];
stem(n,x)
调用:impseq(0,-5,5)可得图形如
1=50;
f2=2000;
n=0:0.01:1;
y=sin(2*pi*f1*n).*cos(2*pi*f2*n);
stem(n,y,'.')
⑥AMI码
function y=ami(x)
%输入x为二进制码,输出y为编好的码
%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示。
grid=300;
t=0:1/grid:length(x);
a=1
for i=1:length(x),%计算码元的值
if(x(i)==1),%如果信息为1
for j=1:grid,%该码元对应的1/3点值取1
y((i-1)*grid+j)=a;
end
a=-a; %取反
else
for j=1:grid,%反之,信息为0,码元对应点取0
y((i-1)*grid+j)=0;
end
end
end
y=[y,x(i)];%为了画图,注意将序列加上最后一位
M=max(y);
m=min(y);
subplot(2,1,1);
plot(t,y);
axis([0,i,m-0.1,M+0.1])
%采用了title命令来实现标记出各码元对应的二元信息
title('1 0 0 1 1 0 0 0 0 1 0 1');
⑦HDB3码
function y=hdb3(x)
%本函数实现将输入的一段二进制代码编为相应的HDB3码输出
%输入x为二进制码,输出y为编好的码
%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示。
grid=300;
t=0:1/grid:length(x);
a=1;
n=0;
m=0;
for i=1:length(x),%计算码元的值
if(x(i)==1),%如果信息为1
for j=1:grid,%该码元对应的点取值与前一个非零点符号相反
y((i-1)*grid+j)=a;
end
a=-a;
n=0;
else
n=n+1;
if(n==4) %如果出现4个连零串,则将第4个零换成与其前一非0符号同极性的符号
m=m+1;
n=0;
if(m==1)
for j=1:grid
y((i-1)*grid+j)=-a;
end
v=-a;
else
for j=1:grid
y((i-1)*grid+j)=-v;
end
v=y((i-1)*grid+grid/2);
if(v==a)
for j=1:grid
y((i-4)*grid+j)=v;
end
end
a=-v;
end
else
for j=1:grid,%反之,信息为0,码元对应的值取0
y((i-1)*grid+j)=0;
end
end
end
end
y=[y,x(i)];%为了画图,注意将序列加上最后一位
M=max(y);
m=min(y);
subplot(2,1,1);
plot(t,y);
axis([0,i,m-0.1,M+0.1])
%采用了title命令来实现标记出各码元对应的二元信息
title('1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1');
%在命令窗口键入如下指令即会出现图形
% t=[1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1];
%hdb3(t);
4、数字调制与解调的仿真(2DPSK必做,2ASK、2FSK、2PSK中选择一种)
根据2ASK、2FSK、2PSK和2DPSK的调制和解调的原理框图,绘出的各点波形及其频谱。(发送任意一个二进制信息序列,如假设发送的二进制信息序列为100110000101,一个码元周期内含有两个载波周期。)
① 2DPSK
function[dp]=dpsk(x)
fc=2;%载波信号频率
grid=300;
t=0:1/grid:(length(x)+1);
ty=0:1/grid:length(x);
ti=0:1/grid:(length(x)+2);
dp(1)=0;%dp为相对码序列,假设其初值为0
for i=1:length(x)
if(dp(i)==x(i))
dp(i+1)=0;
else
dp(i+1)=1;
end
end
for i=1:length(x),%把绝对码序列表示成波形的形式
if(x(i)==1),%如果信息为1
for j=1:grid,%该码元对应的点值取1
y((i-1)*grid+j)=1;
end
else
for j=1:grid,%反之,信息为0,码元对应点取0
y((i-1)*grid+j)=0;
end
end
end
y=[y,x(i)];%为了画图,注意将序列加上最后一位
for i=1:length(x)+1
if(dp(i)==1) %把相对码序列表示成波形的形式
for j=1:grid
dps((i-1)*grid+j)=1;
end
else
for j=1:grid
dps((i-1)*grid+j)=0;
end
end
end
dps=[dps,dp(i)];
b=sin(2*pi*fc*t) ;%dpsk2为已调信号
dpsk2=b.*(dps==0)-b.*(dps==1);
Md=max(dps);
md=min(dps);
MD=max(dpsk2);
mD=min(dpsk2);
subplot(7,2,1);
plot(ty,y);
title('绝对码波形');
axis([0 i+1 md-0.1 Md+0.1]);
subplot(7,2,3);
plot(t,dps);
title('相对码波形');
axis([0 i+1 md-0.1 Md+0.1]);
subplot(7,2,5);
plot(t,dpsk2);
title('已调信号波形');
axis([0 i+1 mD-0.1 MD+0.1]);
delay=[zeros(1,grid),dpsk2];
dpsk2=[dpsk2,zeros(1,grid)];
e=(-1)*dpsk2.*delay;
n=-4:0.02:4;
s=0.04*sinc(n);
g=conv(e,s); %g为经低通滤波后的信号
for i=1:length(x)
h(i)=g((i+1)*grid); %h为经抽样后的信号
end
for i=1:length(x),
if(h(i)>0), %如果信息为大于0
h(i)=1;
for j=1:grid ,%该码元对应的点值取1
k((i-1)*grid+j)=1;
end
else
h(i)=0;
for j=1:grid,%反之,信息小于0,码元对应点取0
k((i-1)*grid+j)=0;
end
end
end
k=[k,h(i)];
subplot(7,2,7);
plot(ti,delay);
title('已调信号延迟Ts后的波形');
axis([0 i+1 mD-0.1 MD+0.1]);
subplot(7,2,9);
plot(ti,e);
title('经相乘器后的信号波形');
axis([0 i+1 mD-0.1 MD+0.1]);
subplot(7,2,11);
plot(ti,g(1:length(ti)));
title('经低通滤波后的信号波形');
axis([0 i+1 mD-0.2 MD+0.2]);
subplot(7,2,13);
plot(ty,k);
title('解调信号波形');
axis([0 i+1 md-0.1 Md+0.1]);
ts=0.001;
df=0.3;
Fs=1/ts;
[Y,y,df1]=fft_seq(y,ts,df);
Y=Y/Fs;
[DPS,dps,df1]=fft_seq(dps,ts,df);
DPS=DPS/Fs;
[DPSK2,dpsk2,df1]=fft_seq(dpsk2,ts,df);
DPSK2=DPSK2/Fs;
[DELAY,delay,df1]=fft_seq(delay,ts,df);
DELAY=DELAY/Fs;
[E,e,df1]=fft_seq(e,ts,df);
E=E/Fs;
[G,g,df1]=fft_seq(g,ts,df);
G=G/Fs;
[K,k,df1]=fft_seq(k,ts,df);
K=K/Fs;
f=[0:df1:df1*(length(e)-1)]-Fs/2;
subplot(7,2,2);
plot(f,abs(fftshift(Y)));
title('绝对码频谱');
axis([-20 20 0 1.5]);
subplot(7,2,4);
plot(f,abs(fftshift(DPS)));
title('相对码频谱');
axis([-20 20 0 1.5]);
subplot(7,2,6);
plot(f,abs(fftshift(DPSK2)));
title('已调信号2DPSK频谱');
axis([-20 20 0 1]);
subplot(7,2,8);
plot(f,abs(fftshift(DELAY)));
title('已调信号延迟Ts后的频谱');
axis([-20 20 0 1]);
subplot(7,2,10);
plot(f,abs(fftshift(E)));
title('经相乘器后的信号频谱');
axis([-20 20 0 1]);
subplot(7,2,12);
plot(f,abs(fftshift(G)));
title('经低通滤波后的频谱');
axis([-20 20 0 1.5]);
subplot(7,2,14);
plot(f,abs(fftshift(K)));
title('解调信号频谱');
axis([-20 20 0 1.5])
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -