clear; clc; %相关参数设定 fs=7e5; %采样率 N=1e3; %序列点数 f1=7e3; %输入信号频率 fvco=8e3; %vco自由震荡频率(无输入时输出) pvco=4e3; %电压频率转化系数 V/Hz fc=3e3; %bpf截至频率 filter_coefficient_num=100; %bpf系数个数 bpf = fir1(filter_coefficient_num,fc/(fs/2)); %bpf设计 %设置输入波形 Ts=1/fs; t=0:Ts:(N-1)*Ts; y=sin(2*pi*f1*t); %初始化输出 VCO=zeros(1,N); Phi=zeros(1,N); error=zeros(1,N); for n=2:N now_t=n*Ts; %实现乘法器 error_mult(n)=y(n)*VCO(n-1); %实现loop filter for m=1:length(bpf) if n-m+1>=1 error_array(m)=error_mult(n-m+1); else error_array(m)=0; end end error(n)=sum(error_array.*(bpf)); %实现vco Phi(n)=Phi(n-1)+2*pi*pvco*error(n)*Ts; VCO(n)=sin(2*pi*fvco*now_t+Phi(n)); end %数据可视化处理 figure plot(t,y,t,VCO); grid on legend('原信号','PLL输出'); xlabel('time [s]') title('input and output signal') figure plot(t,error) xlabel('time [s]') title('Error signal') center_freq(VCO,fs)
时间: 2024-01-30 16:02:01 浏览: 254
你好!这是一个基于PLL的频率锁定系统的MATLAB代码。该系统的输入信号为一个频率为7kHz的正弦波,系统中包括一个VCO、一个相位检测器、一个低通滤波器和一个带通滤波器。其中VCO的自由震荡频率为8kHz,电压频率转化系数为4V/Hz,低通滤波器的截止频率为3kHz,带通滤波器为100个系数的FIR滤波器,截止频率为3kHz。代码中还包括了数据可视化处理的部分,可以看到输入信号和PLL输出信号的对比图以及误差信号的图像。最后还调用了一个名为center_freq的函数,可能是用于计算输出信号的中心频率。
阅读全文
相关推荐
















