📄 bpsk.m
字号:
function [y,Kmod,fs,fb,fc,rd]=bpsk(x,Kmod,Kbase,fs,fb,fc,rd);
if nargin<7; rd=0; end;
if nargin<6; fc=2; end;
if nargin<5; fb=1; end;
if nargin<4; fs=32; end;
if nargin<3; Kbase=1; end;
if nargin<2; Kmod=1; end;
if nargin<1; x=[0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0]; end ;
T=length(x)/fb; m=fs/fb; dt=1/fs; t=0:dt:T-dt;
Kmod=rem(Kmod,2); Kmod=Kmod+ (Kmod ==0) *2; rd=rem (rd,2);
Kbase=rem(Kbase,2); Kbase=Kbase+ (Kbase ==0) *2;
if Kmod == 1;
x1 =1-x*2; tstr='BPSK';
elseif Kmod ==2;
x1=dcode (x,rd);
x1=1-rem(x1,2) *2;
tstr= ['DPSK(reference digit: int2str(rd) )'];
end;
if Kbase == 1;
y =pulse(x1, m,1).*sin(2*pi*fc*t);
elseif Kbase ==2;
x2=pulse(x1, m); x2=bshape (x2); % fs ,fb ,N ,alfa);
y=x2.*sin(2*pi*fc*t);
end;
I=find (abs(y)<1e-09 & [diff(y) 0]>0);
mm=fs/fc; I=rem(I,mm); I=I+(I ==0) *mm;
ph= (m-I+1) * 2 * pi /mm; ph=rem(ph,2*pi);
if nargout<1;
subplot(211);
if Kbase ==1;
plot( [t T],[y y(1)],t,pulse(x ,m,1) -.5, [0 T],[0 0],'b:');
elseif Kbase==2;
plot( [t T],[y y(1)],t, -x2*.5, [0 T],[0 0],'b:');
tstr=[tstr 'with the RC filer'];
end; title('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 (223); plot (f,y,'r'); grid on;
title ('Spectrum'); xlabel('f/fb'); zoom xon;
subplot (224);H=polar(ph,ones(size(ph)),'ro');
set(H, 'markers',8, 'linew',2); xlabel('Phase');
set (gcf, 'num', 'off','name',[tstr','blanks(10) ', 'BBI 2000']);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -