⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 projrt_modulation.m

📁 数字信号解调(接收端)
💻 M
字号:
clear all;
close all;


%%-----------debut du projet------------------%%
load 'binome39.mat';
who;
L=length(Strbbr);
%%frequance d'echantillonage
Fe=L; 

%spectre du signal
spectre_signal=20*log(abs(fft(Strbbr)));
%plot(spectre_signal);title('Figure1');

[Y,indice1]=max(spectre_signal);
%%pour trouver la frequance de brouilleur
fb=indice1;

%%----------------------------------------%%
%%supprimer le brouilleur
Z0=exp(j*2*pi*fb/Fe);
p0=0.9*exp(j*2*pi*fb/Fe);
B=[1,-2*real(Z0),1];
A=[1,-2*real(p0),0.9*0.9];

signal_filtre1=filter(B,A,Strbbr);
spectre1=20*log(abs(fft(signal_filtre1)));
%hold on;
%plot(spectre1,'b');title('Figure2');

%%------------------------------------------%%
%%pour trouver la frequance de porteuse
Fs=Fe/100;
k=1;
for (n=Fs:Fs:Fe/2)
if (spectre1(n)>=80)
    ss(k)=n;
    k=k+1;
end;
end;
fp=ss(int8(k/2));
%display(fp);

%%-----------------------------------------%%
%%demodulation
t=[1:1:Fe]';
Strb2=2*exp(2*j*pi*fp/Fe)*signal_filtre1.*exp(-2*j*t*pi*fp/Fe);

spectre2=20*log(abs(fft(Strb2)));
%plot(spectre2);title('Figure3');


%%--------------------------------------------%%
delta_f=1000;
ZZ0=exp(j*2*pi*(2*fp)/Fe);
P1=0.9*exp(j*2*pi*(2*fp-delta_f)/Fe);
P2=0.9*exp(j*2*pi*(2*fp+delta_f)/Fe);

B2=[1 -2*real(ZZ0) 1];
A2=[1 -2*(real(P2)+real(P1)) P2*conj(P2)+P1*conj(P1)+4*real(P1)*real(P2) -2*conj(P1)*P1*real(P2)-2*conj(P2)*P2*real(P1) P1*conj(P1)*P2*conj(P2)];

signal_3=filter(B2,A2,Strb2);
spectre3=20*log(abs(fft(signal_3)));
%hold on;
%plot(spectre3,'r');title('Figure4');


%%---------------------------------------------%%
%%pour choisir le filtre adapte

%load 'Biphase.mat';%
load 'Gauss.mat';%
%load 'SqRaCo.mat';%no!
%load 'Sinc.mat';%
%load 'Cercle.mat';%
%load 'Triangle.mat';%yes
%h;
%figure;plot(h);
%Hf=20*log(abs(fft(h)));
%hold on;plot(Hf,'b');

had=ifft((fft(h))');
%hold on; plot(h,'g');plot(had,'r');

%Hadf=20*log(abs(fft(had)));
%hold on;plot(h,'g');plot(had,'r');title('Figure5');

signal_Hf=conv(signal_3,had);
%plot(real(signal_Hf(1:2000)));
spectre4=20*log(abs(fft(signal_Hf)));
%plot(spectre4,'r');

%%-------------diagrame d'oeuil---------------%%


%eyediagram(signal_Hf,10,2/Fs);
%plot(signal_Hf);title('Figure6');

%%-------------------------------------------%%
a=0;
for (m=1:1:Fs)
    symb_recus(m)=signal_Hf(m*100-a);
end;
plot(symb_recus,'g*');title('Figure7');

%%-------------decodage---------------------%%
train_binaire=[]; %vecteur vide
for(k=1:1:length(symb_recus))
    if(0<angle(symb_recus(k))&&angle(symb_recus(k))<=1*pi/8)
        symb_bin=[0 0 0 0];    
    elseif(1*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=2*pi/8)
        symb_bin=[0 0 0 1];
    elseif(2*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=3*pi/8)
        symb_bin=[0 0 1 0];
    elseif(3*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=4*pi/8)
        symb_bin=[0 0 1 1];
    elseif(4*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=5*pi/8)
        symb_bin=[0 1 0 0];
    elseif(5*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=6*pi/8)
        symb_bin=[0 1 0 1];
    elseif(6*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=7*pi/8)
        symb_bin=[0 1 1 0];
    elseif(7*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=pi)
        symb_bin=[0 1 1 1];
    elseif(-pi<angle(symb_recus(k))&&angle(symb_recus(k))<=-7*pi/8)
        symb_bin=[1 0 0 0];
    elseif(-7*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-6*pi/8)
        symb_bin=[1 0 0 1];
    elseif(-6*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-5*pi/8)
        symb_bin=[1 0 1 0];
    elseif(-5*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-4*pi/8)
        symb_bin=[1 0 1 1];
    elseif(-4*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-3*pi/8)
        symb_bin=[1 1 0 0];
    elseif(-3*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-2*pi/8)
        symb_bin=[1 1 0 1];
    elseif(-2*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=-1*pi/8)
        symb_bin=[1 1 1 0];
    elseif(-1*pi/8<angle(symb_recus(k))&&angle(symb_recus(k))<=0)
        symb_bin=[1 1 1 1];
    end;
    train_binaire = [train_binaire symb_bin];
end;
care = bit2char(train_binaire);

%%--------------Resultat----------------------%%
%%--Quel standard utilise la technologie Wimax?
%%--le standard 802.16d
%stri=bit2char(codage);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -