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

📄 ami_1.txt

📁 本程序能够产生ami码
💻 TXT
字号:
老师给了一个程序,是编写AMI码编码还有功率谱密度计算的,如下:
%AMI码的功率谱
%时间单位 us 频率单位 MHz 码元速率 Mb/s
clear all
close all
k=input('取样点数=2^k,k=[14]');
if isempty(k),
  k=14;
end
N=2^k;  %采样点数
L=64;  %每码元采样点数
M=N/L;  %码元数
Rb=2;  %码元速率
Ts=1/Rb;  %码元间隔
dt=Ts/L;  %时域取样间隔
df=1/(N*dt);  %频域取样间隔
T=N*dt;  %时域截短时间
Bs=N*df/2;  %频域系统带宽
t=[-T/2+dt/2:dt:T/2];  %时域横坐标
f=[-Bs+df/2:df:Bs];    %频域横坐标 
%定义全零距阵,将来作为求功率的累加器
Ep=zeros(size(f));    
for ii=1:20
  n=1;  %赋初值
  while mod(n,2)~=0,  %保证1的个数为偶数个
    a=round(rand(1,M));
    n=length(find(a==1));
  end
  bb=find(a==1);  %找出a中1的位置
  %找出第奇数个1的位置
  cc=bb(1:2:length(bb));
  %将第奇数个位置的1变为-1  
  a(cc)=-ones(size(cc));  
  ami=zeros(L,M);
for loop=1:L
  ami(loop,=a;  %ami第loop行元素
end
ami=reshape(ami,1,N);
AMI=t2f(ami,dt);
P=AMI.*conj(AMI)/T;
Ep=(Ep*(ii-1)+P)/ii;
end
figure(1)
set(1,'position',[10,50,300,200])
aa=30+10*log10(Ep+eps);
plot(f,aa,'r')
grid on
axis([-5,5,-50,50])
xlabel('f(MHz)')
ylabel('Ps(f)(dBm/MHz)')
figure(2)
set(2,'position',[350,50,300,200])
plot(t,ami,'b')
grid on
axis([-5,5,-1.5,1.5])
xlabel('t(us)')
ylabel('s(t)(v)');
但我实在不明白 ami=reshape(ami,1,N);这个之后怎么就是AMI码了,按照这个程序,它只不过是把每个码元变为了64个,但AMI码编码后应该每个码元占原来的一半啊?谁能解释一下这个程序呢?
还有我也不明白里面的那个while语句到底有什么意义,设置那个n,每次都被重新置1了? 

⌨️ 快捷键说明

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