zoukankan      html  css  js  c++  java
  • 数字锁相环Octave仿真

    clc;
    clear all;
    
    % 仿真数据长度
    SimLens = 1000;
    
    % 载波信号
    Fs = 2400;
    Ts = 1 / Fs;
    
    Fsig = 60;
    
    % 随机初相
    Delta_Phase = rand(1)*2*pi;
    
    SignalMod = exp(-1i*(Fsig/Fs * (1: SimLens) + Delta_Phase));
    
    % 锁相环处理过程
    Signal_PLL = zeros(SimLens, 1);
    NCO_Phase = zeros(SimLens, 1);
    nco = zeros(SimLens, 1);
    Discriminator_Out = zeros(SimLens, 1);
    Freq_Control = zeros(SimLens, 1);
    PLL_Phase_Part = zeros(SimLens, 1);
    PLL_Freq_Part = zeros(SimLens, 1);
    
    % 环路参数
    C1 = 0.012013;
    C2 = 0.000247;
    
    % 正交鉴相器
    for i = 2 : SimLens
        Signal_PLL(i) = SignalMod(i) * exp(-1i * NCO_Phase(i-1));
        I_PLL(i) = real(Signal_PLL(i));
        Q_PLL(i) = imag(Signal_PLL(i));
        
        Discriminator_Out(i) = atan2(Q_PLL(i), I_PLL(i));
        
        PLL_Phase_Part(i) = Discriminator_Out(i) * C1;
        Freq_Control(i) = PLL_Phase_Part(i) + PLL_Freq_Part(i-1);
        
        NCO_Phase(i) = NCO_Phase(i-1) + Freq_Control(i);
        PLL_Freq_Part(i) = Discriminator_Out(i) * C2 + PLL_Freq_Part(i-1);
    end
    
    nco = cos(NCO_Phase);
    
    figure;
    plot(real(SignalMod), 'r+');
    hold on;
    plot(nco, 'b*');
    hold on;
    grid on;
    
    figure
    subplot(2,1,1)
    plot(-PLL_Freq_Part(2: SimLens)*Fs);
    grid on;
    title('PLL频率响应曲线图');
    axis([1 SimLens -100 100]);
    subplot(2,1,2)
    plot(PLL_Phase_Part(2: SimLens)*180/pi);
    title('PLL相位响应曲线图');
    axis([1 SimLens -2 2]);
    grid on;
    

  • 相关阅读:
    Redis 安全
    Redis 数据备份与恢复
    Redis 服务器
    Redis 连接
    Redis 脚本
    Linux中使用netstat命令的基本操作,排查端口号的占用情况
    ElasticSearch 常用查询语句
    GO代码风格指南 Uber Go (转载)
    coding 注意事项(总结中)
    Byte字节
  • 原文地址:https://www.cnblogs.com/lyuyangly/p/7863079.html
Copyright © 2011-2022 走看看