Bonjour à tous,

Je viens à vous afin d'avoir un peu d'aide avec mon code Matlab.

Je viens de réaliser une modulation et une démodulation BPSK et je souhaiterais visualiser le spectre de mon signal d'émission.

mon problème est que je ne comprends pas comment choisir mon vecteur fréquence dans le plot de ma fft.

Je souhaiterai visualiser mon vecteur signalBPSK et je m'attend à voir un pic a 6kHz = fc, ma fréquence carrier.

Quelqu'un pourrais t'il m'aider à comprendre comment marche cette fft et quel vecteur freqVect dois-je choisir ?

Merci à vous.



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
clear all; close all; clc;
 
 
 
%% Defining Datas to transmit.
 
N = 1000; %Number of bits
data = randi([0 1],1,N);
Tb = 0.1e-3; %[s]
 
 
%% Oversampling
OSF = 10;
bits = repmat(data, OSF, 1);
bits = bits(:);
timevect_databit = 0: Tb/OSF: N*Tb-Tb/OSF;
 
%% modulation
 
    A = 1; %signal Amplitude
    fs = 1/Tb;
    mc = 6 ;     % should be configured such as fc >> fb
    fc = mc*fs;  % Carrier frequency fc >> fb
    phaseBit1 = 0;
    phaseBit0 = pi;
    Amp = 1;
    signalBPSK = zeros(1, length(bits));
 
    for i = 1:length(bits)
        if bits(i) == 1
            phase = phaseBit1;
        else
            phase = phaseBit0;
        end 
        sig = A*carrier(Amp, fc, phase, timevect_databit(i));
        signalBPSK(i) = sig;
    end
 
    scatterplot( signalBPSK )
 
 
 
%BPSK demodulation
    %Multiply with the carrier
    phase = 0;
    signal_received = real(carrier(Amp, fc, phase, timevect_databit).*signalBPSK); %Supposing TX and RX LO are synchronised
 
    %integration and sampling
    signal = [];
    for i=1:OSF:length(signal_received)
        signal=[signal trapz(signal_received(i:i+OSF-1))];
    end
 
    %Hard decision
    RXdata = ( signal > 0 );
    scatterplot( signal )
 
 
 
 [NUMBER,RATIO] = biterr(data,RXdata)
 
 
 
%% plots
 
f1 = figure(1);
    subplot(311);
    plot(timevect_databit, bits, 'linewidth',2);grid on;
    axis([ 0 Tb*N -0.5 1.5]);
    ylabel(' Amplitude ');
    xlabel(' Time(sec) ');
    title(' Input signal ');
 
    subplot(312);
    plot(timevect_databit,signalBPSK, 'linew', 2); grid on;
    ymin = min(signalBPSK)-1;
    ymax = max(signalBPSK)+1;
    ylim( [ymin ymax]);
    xlabel('Time(sec)');
    ylabel('Amplitude');
    title('Signal with BPSK modulation ');
 
    subplot(313)
    plot(timevect_databit(1:OSF:end),RXdata,'LineWidth',2);grid on;
    ylim([min(RXdata)-0.5 max(RXdata)+0.5]);
    ylabel('Amplitude');
    xlabel(' Time(sec)');
    title('RX signal');
 
NFFT = 4096;
 
f_fft = fc;
freqVect = -f_fft/2:f_fft/NFFT:f_fft/2-1/NFFT;
 
f2 = figure(2);
    plot(freqVect, fftshift(fft(signalBPSK,NFFT)));
 
 
 
 
 
 
 
function c = carrier(Amp, fc, phase,time)
 
%This function creat a carrier to modulate and demodulate
 
    c = Amp*cos(2*pi*fc*time + phase);
 
end