📄 bpsk_qpsk_builtin01.m
字号:
% -------------
% TRANSMITTER
% -------------
clear all
close all
disp('Here is the code of OFDM using (01)=BPSK ......(02) =QPSK. ');
disp('SET M 2 for BPSK & 4 for QPSK. ');
M = input('Enter value of M 2 = BPSK..... 4 = QPSK etc ... = ');
bits = input('enter no of bits ....= '); ;
nc = input('enter no of carrier....= ');
len_cp = ceil(0.1*nc); % length of cyclic prefix
ifft_points = nc;
fft_points = nc;
empt=[]; ex1=[];rx=[];
data = randsrc(1, bits, 0:M-1);
figure(1)
stem(data); grid on;
title('Transmitted Data ')
modulated_data = pskmod(data, M,pi/4);
for i=1:length(modulated_data);
for j=1:nc;
ex1=[ex1 modulated_data(:,i)];
end
end
figure(1)
scatterplot(ex1);
title('QPSK Modulation')
num_cols=length(ex1)/nc;
data_matrix = reshape(ex1, nc, num_cols);
cp_start = nc-len_cp;
cp_end = nc;
for i=1:num_cols
ifft_data_matrix(:,i) = ifft((data_matrix(:,i)),ifft_points);
for j=1:len_cp,
actual_cp(j,i) = ifft_data_matrix(j+cp_start,i);
end
ifft_data(:,i) = vertcat(actual_cp(:,i),ifft_data_matrix(:,i));
end
[rows_ifft_data cols_ifft_data]=size(ifft_data)
ofdm_data = rows_ifft_data*cols_ifft_data;
ofdm_signal = reshape(ifft_data, 1, ofdm_data);
figure(3)
plot(real(ofdm_signal));
title('Real part of OFDM Signal');
grid on;
figure(4)
plot(imag(ofdm_signal));
title('Imaginary part of OFDM Signal');
grid on;
% ----------
% Receiver
% ----------
recvd_signal = ofdm_signal;
% 4. Convert Data back to "parallel" form to perform FFT
recvd_signal_matrix = reshape(recvd_signal,rows_ifft_data, cols_ifft_data);
% 5. Remove CP
recvd_signal_matrix(1:len_cp,:)=[];
% 6. Perform FFT
for i=1:cols_ifft_data,
% FFT
fft_data_matrix(:,i) = fft(recvd_signal_matrix(:,i),fft_points);
end
recvd_serial_data = reshape(fft_data_matrix, 1,bits*nc);
for b=1:nc:length(recvd_serial_data);
for m=1:1;
rx=[rx recvd_serial_data(:,b)];
end
end
% 7. Convert to serial stream
%recvd_serial_data = reshape(rx, 1,bits);
% 8. Demodulate the data
qpsk_demodulated_data = pskdemod(rx,M);
figure(4)
stem(data)
hold on
stem(qpsk_demodulated_data);
title('Received Data ')
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -