zoukankan      html  css  js  c++  java
  • [PLL][PM]锁相环模拟相位解调

    %锁相环测试
    %模拟相位解调
    
    clear
    close all
    clc
    
    fs=1000;	%采样率
    tend=100;
    t=0:1/fs:tend;
    t(end)=[];
    fc=1;		%载波频偏
    fb=100;		%PM调制信号频率
    gain=0.2;	%锁相环输入增益
    EbN0=20;
    
    [b,a]=cheby2(3,30,0.2);	%切比雪甫滤波器
    num=gain*b;
    den=conv([1 -1],a)+[num,0];
    pole=roots(den);
    abs(pole)		%计算系统稳定性
    fvtool(b,a);
    lb=length(b);
    la=length(a)-1;
    bb=zeros(1,lb);
    aa=zeros(1,la);
    
    cio=cos(2*pi*fc*t+cos(2*pi*fb*t));
    cqo=sin(2*pi*fc*t+cos(2*pi*fb*t));
    ci=awgn(cio,EbN0,'measured');
    cq=awgn(cqo,EbN0,'measured');
    cout=complex(zeros(size(ci)),zeros(size(cq)));
    phase_out=zeros(size(ci));
    phase=0;
    
    for k=1:length(cout)
    	cout(k)=exp(1i*phase);
    	err=complex(ci(k),cq(k))*exp(-1i*phase);
    	phase_out(k)=angle(err);
    	err=phase_out(k)*gain;
    	bb=[err,bb(1:lb-1)];
    	err=sum(bb.*b)-sum(aa.*a(2:end));
    	aa=[err,aa(1:la-1)];
    	phase=phase+err;
    	if phase>pi, phase=phase-2*pi;
    	elseif phase<-pi, phase=phase+2*pi;end
    end
    
    CO=fft(cio);
    CO=abs(CO)/length(CO);
    CR=fft(real(cout));
    CR=abs(CR)/length(CR);
    F=linspace(0,fs,length(CR));
    N=ceil(length(F)/2);
    plot(F(1:N),CO(1:N),'r');
    hold on
    plot(F(1:N),CR(1:N),'b');
    figure
    plot(t,phase_out);
    PO=fft(phase_out);
    PO=abs(PO)/length(PO);
    figure
    plot(F(1:N),PO(1:N));
    


  • 相关阅读:
    SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
    开涛spring3(9.4)
    开涛spring3(9.3)
    开涛spring3(9.2)
    开涛spring3(9.1)
    开涛spring3(8.4)
    分水岭算法——学习笔记
    【代码备份】pocs.m
    【代码备份】NLM插值
    【代码备份】原图降采样后进行NLM滤波
  • 原文地址:https://www.cnblogs.com/pangblog/p/3246928.html
Copyright © 2011-2022 走看看