📄 czy0.m
字号:
clear all
disp('')
disp('提示:')
disp('一阶默认频率为 5 /Hz')
dtype = input('是否接受这默认值:接受请输入y,否则输入n > ','s');
if dtype == 'y'
fdel = 5;
else
disp('')
fdel = input('请输入一阶锁相频率: > ');
end
disp('请输入')
G = input('环路增益 >');
fs = input('抽样频率/Hz > ');
tstop = input('仿真结束时间/> ');
end
npts = fs*tstop+1;
t = (0:(npts-1))/fs;
nsettle = fix(npts/10);
tsettle = nsettle/fs;
fin = [zeros(1,nsettle),fdel*ones(1,npts-nsettle)];
phin = [zeros(1,nsettle),2*pi*fdel*t(1:(npts-nsettle))];
w2c=0; w4c=0; phivco=0;
twopi=2*pi;
twofs=2*fs;
disp(' ')
phierror = zeros(1,npts);
fvco = zeros(1,npts);
phierror1 = zeros(1,npts);
fvco1 = zeros(1,npts);
for i = 1:npts
s1=phin(i) - phivco;
s2=sin(s1);
s3=G*s2;
s4 = G*s1;
w1c = s3+w2c;
w3c = s4+w4c;
w2c = s3+w1c;
sw4c = s4+w3c;
phivco = w1c/twofs;
phivco1 = w3c/twofs;
phierror(i) = s1;
sphierror1(i) = s1;
fvco(i) = s3/twopi;
fvco1(i) = s4/twopi;
end
phierrn = phierror/pi;
phierrn1 = phierror1/pi;
freqerror = fin-fvco;
linearfreqerror = fin-fvco1;
pp=0;
while pp == 0
p = menu('一阶锁相环','相位误差','输入频率和VCO频率','退出');
if p == 1
plot(phierrn,freqerror,'r',phierrn,linearfreqerror,'k')
title('相位误差图')
xlabel('相位误差/Pi')
ylabel('频率误差 /Hz')
grid
pause
elseif p == 2
plot(t,fin,'k',t,fvco,'r');grid
title('输入频率和VCO频率')
xlabel('时间/s');ylabel('频率/Hz');
pause
elseif p == 3
pp = 1;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -