PDA

查看完整版本 : [MATLAB信号处理] 哪位爸爸能将BPSK修改成QPSK么


lajitianhua
2012-03-19, 14:38
fs = 10000;
w = 100;
A = 1;
Symbol_Time = 0.02;
Unit_Symbol = fs*Symbol_Time;
High = ones ( 1,Unit_Symbol );
Low = zeros ( 1,Unit_Symbol );
Signal = [0,1,1,0,0,1,1,0,1]
Signal_length = length ( Signal );
Modulation = zeros ( 1,Unit_Symbol*Signal_length );
Original_signal = zeros ( 1, Unit_Symbol*Signal_length );
Demodulated_signal = zeros ( 1,Unit_Symbol*Signal_length );
t = 0:1/fs:Symbol_Time*Signal_length-1/fs;
for I = 1:Signal_length
if Signal(I) == 1
Original_signal((I-1)*Unit_Symbol + 1:I*Unit_Symbol) = High;
else
Original_signal((I-1)*Unit_Symbol + 1:I*Unit_Symbol) = Low;
end
end
for I = 1 : Signal_length
if Signal(I) == 1
Modulation((I-1)*Unit_Symbol+1:I*Unit_Symbol)=A*cos(2*pi*w*t((I-1)*Unit_Symbol+1: I*Unit_Symbol ) );
else
Modulation((I-1)*Unit_Symbol+1:I*Unit_Symbol)= -A*cos(2*pi*w*t( (I-1)*Unit_Symbol + 1:I*Unit_Symbol ) );
end
end
figure
subplot (2,1,1)
plot(t, Original_signal ,'b');
axis( [0,Symbol_Time *(Signal_length+1), - (A/2), A + (A/2)] );
title ( '原始信号' );
grid
subplot (2,1,2);
plot ( t, Modulation ,'-b');
axis( [0,Symbol_Time*(Signal_length +1), - 3*(A/2),3*(A/2)] );
title ( '调制后的信号' );
grid
N=1024;
y=fft(Modulation,N);
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);
figure
subplot(2,1,1);
plot(f,mag);
axis([-1000,11000,0,120]);
title ( 'BPSK信号频谱图' );
grid;
Carrier = Modulation .*cos (2*pi*w*t );
Local_Carrier =A* cos (2*pi*w*t)
subplot(2,1,2)
plot (t,Local_Carrier ,'-b');
axis( [0 ,Symbol_Time *( Signal_length+1), -3*(A/2),3*(A/2) ] );
title ( '本地载波' );
grid
figure
subplot(2,1,1)
plot (t,Carrier ,'-b');
axis( [0 ,Symbol_Time *( Signal_length+1), -3*(A/2),3*(A/2) ] );
title ( '相乘后的波形' );
grid
[N,Wn] = buttord(2*pi*50,2*pi*150,5,30,'s');
[b,a]=butter(N,Wn,'s');
[bz,az]=impinvar(b,a,fs);
Carrier = filter(bz,az,Carrier);
subplot(2,1,2)
plot ( t, Carrier ,'-b');
axis( [0,Symbol_Time *(Signal_length+1), - 3*(A/2), 3*(A/2) ] );
title ( '低通滤波后的波形' );
grid
for I =1:Signal_length
if Carrier((2*I-1)*Unit_Symbol/2) < 0.25
Demodulated_signal( (I-1)*Unit_Symbol +1: I*Unit_Symbol) =Low;
else
Demodulated_signal( (I-1)*Unit_Symbol + 1: I*Unit_Symbol) =High;
end
end
figure
subplot(2,1,1)
plot ( t, Demodulated_signal ,'b');
axis( [ 0 , Symbol_Time *( Signal_length+1), - (A/2), 3*(A/2) ] );
title ( '解调后的波形' );
grid