Академический Документы
Профессиональный Документы
Культура Документы
clear all;
Eb = 5;
fc = 8e3;
rb = 1.25e3;
delf = 3e3;
tb = 1/rb;
N = 1000;
%% PSD BPSK
% method 1: formula
Tb = 1*tb;
f = -(fc+delf):(2*(fc+delf))/(N-1):fc+delf;
% psd = 2*Eb.*power(sinc(Tb.*f),2);
psd_pb = (1/4).*((2*Eb.*power(sinc(Tb.*(f-
fc)),2))+(2*Eb.*power(sinc(Tb.*(f+fc)),2)));
psd_pb = psd_pb./max(psd_pb);
psd_bpsk = 10*log10(psd_pb);
subplot(2,2,1);
plot(f, 10*log10(psd_pb),'k');
xlabel('Frequency [Hz]');
ylabel('Normalized PSD(f) [dB/Hz]');
title('PSD of BPSK');
grid on;
%% PSD QPSK
Tb = 2*tb;
% psd = 2*Eb.*power(sinc(Tb.*f),2);
psd_pb = (1/4).*((2*2*Eb.*power(sinc(Tb.*(f-
fc)),2))+(2*2*Eb.*power(sinc(Tb.*(f+fc)),2)));
psd_pb = psd_pb./max(psd_pb);
psd_qpsk = 10*log10(psd_pb);
subplot(2,2,3);
plot(f, 10*log10(psd_pb),'k');
xlabel('Frequency [Hz]');
ylabel('PSD(f) [dB/Hz]');
title('Normalized PSD of QPSK');
grid on;
%% PSD of MSK
Tb = tb;
psd1 = (64/pi^2).*(Eb.*power((cos(2*pi*Tb.*f)),2))./power((1-
(16.*f.*f*Tb*Tb)),2);
psd_pb = (1/4).*((32/pi^2).*(2*Eb.*power((cos(2*pi*Tb.*(f-
fc))),2))./power((1-(16.*(f-fc).*(f-fc)*Tb*Tb)),2) +
(32/pi^2).*(2*Eb.*power((cos(2*pi*Tb.*(f+fc))),2))./power((1-
(16.*(f+fc).*(f+fc)*Tb*Tb)),2));
psd_pb = psd_pb./max(psd_pb);
psd_msk = 10*log10(psd_pb);
subplot(2,2,2);
plot(f, 10*log10(psd_pb),'k');
xlabel('Frequency [Hz]');
ylabel('Normalized PSD(f) [dB/Hz]');
title('PSD of MSK');
grid on;
%% PSF FSK
Tb = 1*tb;
fc1 = 9e3;
fc2 = 7e3;
fc = max(fc1,fc2);
f = -(fc+delf):(2*(fc+delf))/(N-1):fc+delf;
% psd = 2*Eb.*power(sinc(Tb.*f),2);
psd_pb1 = (1/4).*((2*Eb.*power(sinc(Tb.*(f-
fc1)),2))+(2*Eb.*power(sinc(Tb.*(f+fc1)),2)));
psd_pb2 = (1/4).*((2*Eb.*power(sinc(Tb.*(f-
fc2)),2))+(2*Eb.*power(sinc(Tb.*(f+fc2)),2)));
subplot(2,2,4);
plot(f, 10*log10(psd_pb),'k');
xlabel('Frequency [Hz]');
ylabel('Normalized PSD(f) [dB/Hz]');
title('PSD of FSK');
grid on;
%%
figure;
plot(f, psd_bpsk, 'k', f, psd_qpsk, 'b', f, psd_msk, 'r');
legend('BPSK', 'QPSK', 'MSK');
xlabel('Frequency [Hz]');
ylabel('Normalized PSD(f) [dB/Hz]');
title('Comaprison of PSDs');
Study of orthogonal signals
clear all;
subplot(2,1,1);
plot(t,x,'k',t,x1,'r');
legend('Signal 1', 'Signal 2 (Exponential muliplied)');
title(['Pulse width=', num2str(T),'s and its exponential multiple time
domain']);
xlabel('Time(s)');
ylabel('Amplitude');
grid on;
L=length(x);
NFFT = 1024;
X = fftshift(fft(x,NFFT)); %FFT with FFTshift for both negative & positive
frequencies
X1 = fftshift(fft(x1,NFFT));
f = fs*(-NFFT/2:NFFT/2-1)/NFFT; %Frequency Vector
subplot(2,1,2);
plot(f,abs(X)/L,'k',f,abs(X1)/(L),'r');
legend('Signal 1', 'Signal 2 (orthogonal)');
title('Magnitude of FFT of orthogonal signals (1/T) separated');
xlabel('Frequency (Hz)')
ylabel('Magnitude |X(f)|');
grid on;
Study of BER of AWGN channel
clear all;
m_r = rand(1,12000);
m_t = zeros(1,12000);
for num=1:1:size(m_r,2)
if m_r(num) > 0.5
m_t(num) = 1;
else
m_t(num) = 0;
end
end
s_snr = 1:1:30;
count_error = zeros(1,size(s_snr,2));
prob_error = zeros(1,size(s_snr,2));
y = awgn(m_t, snr);
for num=1:1:size(y,2)
if y(num) > 0.5
y(num) = 1;
else
y(num) = 0;
end
end
error = abs(y - m_t);
count_err = 0;
for num=1:size(error,2)
if error(num)>0
count_error(snr) = count_error(snr) + 1;
end
end
prob_error(snr) = count_error(snr)/size(m_t,2);
end
a=1;
semilogy(s_snr,prob_error,'k');
xlabel('SNR [dB]');
ylabel('BER');
title('BER v/s SNR for Binary AWGN Channel')
grid on;