📄 lc22.m
字号:
%本程序中时间单位是微秒
%频率单位为MHz
%码元速率单位是Mb/s
global dt df t f N
close all
N=2^13; %采样点数
L=64; %每码元的采样点数
M=N/L ; %码元数
Rb=2;
Ts=0.5 ; %码元宽度是0.5us
dt=Ts/L;
df=1/(N*dt); %MHz
T=N*dt ; %截短时间
Bs=N*df/2 ; %系统带宽
n0=0.03;
alpha=0.5; %滚降系数
Na=4; %示波器扫描宽度为4个码元
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs]; %频域横坐标
figure(1)
set(1,'Position',[10,50,400,400])
%设定窗口位置及大小
figure(2)
set(2,'Position',[410,50,400,400])
%设定窗口位置及大小
%升余弦
hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
HR=abs(t2f(hr));
%取模是为了忽略时延
GT=sqrt(HR);
GR=GT;
EP=zeros(size(f))+eps;
EPR=zeros(size(f))+eps;
for ii=1:30
a=sign(randn(1,M));
imp=zeros(1,N); %产生冲激序列
imp(L/2:L:N)=a/dt;
IMP=t2f(imp);
s= real(f2t(IMP.*GT));%发送信号
sita=n0*Bs; %信道中噪声功率
n_ch=sqrt(sita)*randn(size(t)); %信道噪声
sr0=s+n_ch; %接收信号,根号升余弦滤波前
sr=real(f2t(t2f(sr0).*GR)); %接收信号
S=t2f(s); %S是s的傅氏变换
P=S.*conj(S)/T; %功率谱
SR=t2f(sr); %SR是接收信号的傅氏变换
PR=SR.*conj(SR)/T; %功率谱
EP=(EP*(ii-1)+P+eps)/ii;
EPR=(EPR*(ii-1)+PR+eps)/ii;
end
figure(1)
subplot(2,1,1)%发送信号的眼图
tt=[0:dt:Na*L*dt];
for jj=1:Na*L:N-Na*L
plot(tt,s(jj:jj+Na*L));
hold on
end
grid
figure(1)
subplot(2,1,2)%发送信号的功率谱
aa=30+10*log10(EP+eps); %加eps以避免除以零
plot(f,aa,'b');
grid
axis([-10,+10,-50,50])
xlabel('f (MHz)')
ylabel('Ps(f) (dBm/MHz)')
figure(2)
subplot(2,1,1)%接收信号的眼图
tt=[0:dt:Na*L*dt];
for jj=1:Na*L:N-Na*L
plot(tt,sr(jj:jj+Na*L));
hold on
end
grid
figure(2)
subplot(2,1,2)%接收信号的功率谱
aa=30+10*log10(EPR+eps); %加eps以避免除以零
plot(f,aa,'b');
grid
axis([-10,+10,-50,50])
xlabel('f (MHz)')
ylabel('Ps(f) (dBm/MHz)')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -