⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic.m

📁 SSB调制 完整的调制和信号功率谱与眼图
💻 M
字号:
global  dt  t  df  N
close all
N=2^13; %采样点数
L=32;   %每码元的采样点数
M=N/L;   %码元数
Rb=2;	%码速率是2Mb/s , 码速率单位是Mb/s
Ts=1/Rb;        %码元间隔
dt=Ts/L;   %时域采样间隔 , 本程序中时间单位是微秒
df=1/(N*dt) ;    %频域采样间隔 ,频率单位为MHz
T=N*dt;          %截短时间
Bs=N*df/2 ;      %系统带宽
Na=4;           %示波器扫描宽度为4个码元
alpha=0.5;		%滚降系数=0.5	
t=linspace(-T/2,T/2,N);	%时域横坐标
f=linspace(-Bs,Bs,N)+eps;	%频域横坐标

for loop1=1:10
 Eb_N0(loop1)=(loop1-1) ; %分贝值变为真值
 eb_n0(loop1)=10^(Eb_N0(loop1)/10);
 n_err=0;     			%误码计数
 
 for loop2=1:3  
 
a=sign(randn(1,M));    %产生M个取值随机码,服从标准正态分布(均值为零,方差为1),后对其取符号
imp=zeros(1,N);
imp(1:L:N)=a/dt;  %产生冲击序列信号          
G=Ts*sin(pi*f*Ts).*exp(-j*pi*f*Ts)./(pi*f*Ts);  %发送滤波器冲激响应(矩形不归零脉冲)的傅式变换
s=f2t(t2f(imp).*G);   %频域的方法产生数字信号
S=t2f(s);          %数字基带信号的频域表达式

hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
GR=abs(t2f(hr));       %接收滤波器采用升余弦滤波器(滚降系数=0.5)
yy=real(f2t(S.*GR));    %无加性噪声基带传输          
y=yy(L/2:L:N);	 %以L/2为起点,步长L,取样点N 
y11=sign(y);                    %接收码元    
Y=t2f(yy);          %输出信号的频域表达式

n_err=n_err+length(find(y11~=a)) ; %误码个数 
 end
 Pe(loop1)=n_err/(M*loop2);	%误码率
 %end

for jj=1:100
EP=zeros(size(f));
P=S.*conj(S)/T;		 %输入信号功率谱
EP=(EP*(jj-1)+P)/jj;        %累计平均
aa=30+10*log10(EP+eps);	%加eps以避免除以零
end



for jj=1:100
EP=zeros(size(f));
PY=Y.*conj(Y)/T;		 %输出信号功率谱
EP=(EP*(jj-1)+PY)/jj;        %累计平均
aaY=30+10*log10(EP+eps);	%加eps以避免除以零
end


figure(1)        %输入信号码形
set(1,'position',[10,50,400,300])%设定窗口位置及大小
figure(2)        %输入信号的功率谱
set(2,'position',[350,50,400,300]);%设定窗口位置及大小
figure(3)        %输入信号的眼图
set(3,'position',[690,50,400,300]);%设定窗口位置及大小
figure(4)        %输出信号码形
set(4,'position',[10,400,400,300]);%设定窗口位置及大小
figure(5)        %输出信号码形
set(5,'position',[350,400,400,300]);%设定窗口位置及大小
figure(6)        %输出信号的眼图
set(6,'position',[690,400,400,300]);%设定窗口位置及大小
figure(7)        %输出信号的眼图
set(7,'position',[800,350,400,300]);%设定窗口位置及大小


figure(1)            %输入信号码形
plot(t,s,'b')
grid
axis([-4,+4,-1.5,1.5]);
xlabel(('t(ms)'));
ylabel('s(t)(V)');
title('输入信号码形');

figure (2)        %输入信号的功率谱
plot(f,aa,'g');
grid
axis([-10,+10,-50,+50])
xlabel('f(MHZ)')
ylabel('Ps(f)(MHZ)')
title('输入信号的功率谱');

figure(3)        %输入信号的眼图
hold on
 grid 
 xlabel('t in us')
 ylabel('s(t) in V')
 tt=[0:dt:Na*L*dt];
 for jj=1:Na*L:N-Na*L
  plot(tt,s(jj:jj+Na*L));
end
title('输入信号的眼图');

figure(4)            %输出信号码形
plot(t,yy,'b')
grid
axis([-4,+4,-1.5,1.5]);
xlabel('t(ms)');
ylabel('y(t)(V)');
title('抽样前输出信号码形');
figure (5)        %输出信号的功率谱
plot(f,aaY,'g');
grid
axis([-10,+10,-50,+50])
xlabel('f(MHZ)')
ylabel('Ps(f)(MHZ)')
title('抽样前输出信号的功率谱');
figure(6)        %输出信号的眼图
hold on
 grid 
 axis([0,+2,-1.5,1.5]);
 xlabel('t in us')
 ylabel('y(t) in V')
 tt=[0:dt:Na*L*dt];
 for jj=1:Na*L:N-Na*L
  plot(tt,yy(jj:jj+Na*L));
end
title('抽样前输出信号的眼图');
figure (7)        %误码率
  semilogy(Eb_N0,Pe,'b-');
  eb_n0=10.^(Eb_N0/10);	%还原为真值 
  hold on
  semilogy(Eb_N0,0.5*erfc(sqrt(eb_n0)),'r');
  axis([0,9,1e-4,1])
  xlabel('Eb/N0')
  ylabel('Pe')
end
  title('误码率');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -