📄 pll.m
字号:
% 本程序仿真正弦波的跟踪过程
% PLL illustration using MATLAB
% 2002
clear all;
% close all;
% 定义初始相位偏移和输入连续波频率以及采样频率
theta = 60*pi/180;
f=1e3;
fs=100e3;
% 生成未调制连续波的实部和虚部
k=1:1:1000;
delf=f/20;
cpx1=exp(j*(2*pi*k*(f+delf)/fs+theta))+.01*(rand(1,1000)+j*rand(1,1000));
%初始化锁相环
phi_hat(1)=30;
e(1)=0;
phd_output(1)=0;
nco(1)=0
% 定义环路滤波器参数
kp=0.15; % 比例常数
ki=0.1; % 积分常数
% 锁相环的实现
for n=2:length(cpx1)
nco(n)=conj(exp(j*(2*pi*n*f/fs+phi_hat(n-1)))); % 数控振荡器
phd_output(n)=imag(cpx1(n)*nco(n)); % 鉴相
e(n)=e(n-1)+(kp+ki)*phd_output(n)-ki*phd_output(n-1); %滤波
some(n)=(kp+ki)*phd_output(n)-ki*phd_output(n-1);
phi_hat(n)=phi_hat(n-1)+e(n); % 更新数控振荡器
end;
% 绘图
index_stop=200;
figure
subplot(211),plot(1:index_stop, phd_output(1:index_stop)),ylabel('Ph. Det.')
subplot(212),plot(1:index_stop, phi_hat(1:index_stop)*180/pi),ylabel('Est. Phs.')
figure, index_stop=200;
subplot(211),plot(1:index_stop, real(nco(1:index_stop)),1:index_stop, real(cpx1(1:index_stop))),
ylabel('RE-PLL')
subplot(212),plot(1:index_stop, imag(nco(1:index_stop)),1:index_stop, imag(cpx1(1:index_stop))),
ylabel('IM-PLL')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -