在相移键控期间改变相位

时间:2016-09-25 14:17:43

标签: matlab modulation

我正在进行二进制数据的相移键控。

这就是我正在做的事,

 f=10;
 m=[];
 b = [1 0 0 1 1 1 0]
    for i=1:1:length(b)
        if (b(i)==1)
            Modulated=10*cos(2*pi*f*t2);
        else
            Modulated=10*cos(2*pi*f*t2 + pi);
        end
        m=[m Modulated];
    end

当从最后一位到当前位或当前位与未来位之间存在差异时,相位不会发生变化。

如果位值存在差异,如何更改相位?

编辑:完整系统的图片。我正在使用equiripple过滤器。 enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。也许频率太高,情节太密集,以至于你无法注意到它。尝试使用较低的频率。

这是(简化)完全调制和解调的代码:

%% modulation
f=0.5;
t2 = 0:0.01:1;
m=[];
b = [1 0 0 1 1 1 0];
for i=1:1:length(b)
    if (b(i)==1)
        Modulated=10*cos(2*pi*f*t2);
    else
        Modulated=10*cos(2*pi*f*t2 + pi);
    end
    m=[m Modulated];
end
subplot(3, 1, 1)
plot(m)
title('Modulated')

%% downconversion
oscillator = cos(2*pi*f*t2);
demod = m .* repmat(oscillator, 1, length(b));
subplot(3, 1, 2)
plot(demod)
title('Downconverted')

%% demodulation
d = [];
for i = 1:1:length(b)
    idx_start = (i - 1) * length(t2) + 1;
    idx_end = i * length(t2);
    Demodulated = mean(demod(idx_start:idx_end));
    d = [d Demodulated];
end
subplot(3, 1, 3)
plot(d, 'x')
title('Demodulated (LPF)')

enter image description here

请注意,即使信号 1 和信号 0 连续,也不代表他们有同一阶段。