fskdet.m

来自「交全面的给出了好几种调制解调方案的matlab代码,又ASK,BPSK,FSK,」· M 代码 · 共 34 行

M
34
字号
function [xn,x]=fskdet(y,fs,fb,fc1,fc2);
%
% Usage:[xn,x]=fskdet(y,fs,fb,fc1,fc2);BBI
% 2000;相干方式解调,y为sak信号,xn为解调输出的二进制码流向量,x为解调输出的脉冲信号波形
if nargin<5; fc2=2.5; end;
if nargin<4; fc1=2.0; end;
if nargin<3; fb=1;    end; 
if nargin<2; fs=32;  end;
if nargin<1;y=fsk(str2cod('CH')); end;
dt=1/fs;n=length(y);t=(0:n-1)*dt;
[b,a]=butter(4,2*fb/fs);
[b1,a1]=cheby1(3,.5,2*fc1/fs);
y1=filtfilt(b1,a1,y).*sin(2*pi*fc1*t);
y1=filtfilt(b,a,y1);
[b2,a2]=cheby1(3,.5,2.5*fc1/fs,'high');
y2=filtfilt(b2,a2,y).*sin(2*pi*fc2*t);
y2=filtfilt(b,a,y2);
m=fs/fb;N=n/m;n=(.75:1:N)*m;
x=y1-y2;xn=(sign(x(n))+1)/2;
%--------------------------------------------------------------
if nargout<1;
    c='bbbbbbbbrrrrrrrr';
    subplot(211);plot(t,y);title('Input');axis([0,45,-1,1]);
    subplot(212);plot(t,x,t,sign(x)*.5);axis([0,45,-1,1]);
    set(gca,'ygrid','on');v=axis;
    for i=1:N;
        ci=rem(i,16);ci=ci+(ci==0)*16;ci=c(ci);
        text((2*i-1)*m*dt/2,v(4)*.8,int2str(xn(i)),...
            'color',ci,'hor','center');
    end; title('Output');
    set(gcf,'num','off','name',['Coherent Detection of FSK',...
            'blanks(10)','BBI 2000']);
end; zoom xon;

⌨️ 快捷键说明

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