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

📄 b_single_guiling.m

📁 描述了利用矩阵方式产生单极性归零码的过程
💻 M
字号:
%例二 AMI码的功率谱

%本程序中时间单位是微秒
%频率单位为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       %系统带宽

t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs];   %频域横坐标

%figure(1)
 %set(1,'Position',[10,50,300,200])
                %设定窗口位置及大小 
%figure(2)
 %set(2,'Position',[400,50,300,200])
                %设定窗口位置及大小 

EP=zeros(size(f));
for ii=1:50
 n=1;  %每次有偶数个1
 while rem(n,2)~=0,     %求余数,n为奇数
   a=round(rand(1,M));  %M个随机的01码
   n=length(find(a==1));    %1的个数
 end
 bb=find(a==1);    %bb是a中1的位置,例如bb=1 2 3 4 9 10
 %cc=bb(1:2:length(bb)); 
    %cc是a中奇序数1的位置,若bb如上,则cc=1 3 9
 b=a;     %b,a相当于一个数组
 %b(cc)=-ones(size(cc)); %所有位于cc的1变成-1

 ami=zeros(L,M);    %L行M列的零矩阵
 for loop=1:L,ami(loop,:)=b; end  %每一行都赋为a的值,M列即M个码元,L行即每码元采样L点
 for loop=L/2+1:L,ami(loop,:)=zeros(1,M); end  %所有码元后半周期归零
 ami=reshape(ami,1,N);  %将ami转成1行N列,以便作为横坐标
 
 AMI=t2f(ami);       %AMI信号的傅氏变换
 P=AMI.*conj(AMI)/T;        %AMI信号的功率谱;conj是取复共轭
 EP=(EP*(ii-1)+P)/ii;       %累计平均
                            %length(EP)/M=?
 
 %figure(1)
 

 %figure(2)
 subplot(2,1,1)
 plot(t,ami,'r')
 grid
 axis([-3,+3,-1.5,1.5])
 xlabel('t (us)')
 ylabel('s(t) (V)')
 title('单极性归零码码型(Ts=0.5us)')
 
 subplot(2,1,2)
 aa=30+10*log10(EP+eps);%加eps以避免除以零,如果把EP换成P,则图形有毛刺;随机码越长,图形越平滑
 plot(f,aa,'r');
 grid
 axis([-15,+15,-50,50])
 xlabel('f  (MHz)')
 ylabel('Ps(f)   (dBm/MHz)')
 title('单极性归零码功率谱')

end

⌨️ 快捷键说明

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