📄 pulse.m
字号:
function [y,m]=pulse(x,m,Kmod);
%
% Usage:y=pulse(x,m,Kmod); BBI 2000
% ;x代表二进制码流的向量;m=fs/fb,其中fs为采样频率,fb为比特率,m要为整数,Kmod代表数字基带信号的类型;
if nargin<3;Kmod=1; end ;
if nargin<2;m=16; end;
if nargin<1;x=randint(1,32);end;
di=.5; Kmod=rem(Kmod,5);Kmod=(Kmod==0)*5+Kmod;
if Kmod==1;
xx=[x;x];xx=xx(:)';tstr='Unipolor NRZ';
elseif Kmod==2;
xx=[x;x];xx=2*xx(:)'-1;tstr='Polor NRZ';
elseif Kmod==3;
xx=[x;zeros(size(x))];xx=xx(:)';di=.2;tstr='Unipolor RZ';
elseif Kmod==4;
I=find(x==1);x1=x(I);x1=rem(cumsum(x1),2)*2-1;xx=x;%rem 模2减,cumsum 逐级累加
xx(I)=x1;
xx=[xx;zeros(size(x))];xx=xx(:)';di=.2;tstr='Bipolor RZ';
elseif Kmod==5;
xx=[x;rem(x+1,2)];xx=2*xx(:)'-1;tstr='Manchester NRZ';
end;
y=xx;
for i=1:fix(m/2)-1;y=[y;xx];end;y=y(:)';%fix取靠近0的整数
%-------------------------------------------------------------------------
if nargout<1;
subplot(211);plot(1+(1:length(y))/m,y);hold on ;
v=axis;axis([v(1:2) -1.2 1.5]);zoom xon;
if Kmod==2|Kmod==0;
plot([0 v(2)],[0 0],':');
end; hold off;
set(gcf,'num','off','name',...
['Binary Pulse Generator','tstr','blanks(10)'...
'BBI 2000']);
for i=1:length(x);
text(i+di,1.3,int2str(x(i)),'color','b');%在涂上标识二进制码
end;
title('Pulse Signal');
n=length(y);y=fft(y)/n;y=abs(y(1:fix(n/2)))*2;
I=find(y<1e-04);y(I)=1e-04;y=20*log10(y);
f1=m/n;f=0:f1:(length(y)-1)*f1;
subplot(212); plot(f,y,'r');
title('Power Spectrum');xlabel('f/fb');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -