FSK调制的MatLab代码不能正常工作

3npbholx  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(157)

这是我的代码,用于产生频率为30赫兹的TTL波,并用FSK和载波频率400进行调制

f=30;
T = 1/f; 
t = linspace(0, T*10, 1000);
y = (1/2)*square(t/T*2*pi)+(1/2);
plot(t, y);
hold on;
fc=400;
df=20;
y_m = cos(2.*pi.*(fc+(2.*y).*df).*t);
plot(t,y_m);
hold off;

这是结果:

首先,当TTL从0变到1或反之亦然时,我会出现相位不连续。第二个问题是,调制信号的域不是每个地方都相同的,它会发生变化。
我该如何解决这些问题呢?

quhf5bfb

quhf5bfb1#

为了解决不连续性问题,应该确保满足连续相位FSK(CPFSK)的条件;即以rad/s为单位的频偏应为pi/T的整数倍,1/2T以hz为单位。如果为Δf选择任意值,则应该会出现不连续。
对于变幅的第二个问题,您应该增加余弦计算的点数以使其足够平滑。

clear, close
f = 30;
T = 1/f; 
t = linspace(0, T*5, 10000);
y = 1/2 * square(t/T*2*pi) + 1/2;
plot(t, y, "LineWidth", 1);
hold on;
fc = 400;
df = 20;
y_m = cos(2*pi*(fc+y*df/T) .* t);
plot(t, y_m, "LineWidth", 1);
axis tight
ylim([-1.2 1.2])
hold off

相关问题