Giải mã tín hiệu ADS-B sử dụng Matlab + RTL-SDR

https://www2.t17lab.com/blog/giai-ma-tin-hieu-ads-b-su-dung-matlab-rtl-sdr/
Kết nối rtl-sdr vào máy tính và kiểm tra tại Matlab
sdrinfo
ans =
RadioName: 'Generic RTL2832U OEM'
RadioAddress: '0'
RadioIsOpen: 0
TunerName: 'R820T'
Manufacturer: 'Realtek'
Product: 'RTL2838UHIDIR'
GainValues: [29×1 double]
RTLCrystalFrequency: 28800000
TunerCrystalFrequency: 28800000
SamplingMode: 'Quadrature'
OffsetTuning: 'Disabled'
Phần cứng rtl-sdr có thể thu ADS-B tại tần số 1090 MHz, máy phát (tàu bay) sử dụng điều chế tín hiệu theo vị trí xung (pulse-position modulation - PPM) với tốc độ truyền là 1Mbit/giây. Với lệnh sau, tôi thiết lập các thông số thu tại phần cứng theo yêu cầu kỹ thuật của máy phát:
RX = comm.SDRRTLReceiver('0','CenterFrequency',1090e6,...
'EnableTunerAGC',false,'TunerGain',60,'SampleRate',2.4e6,...
'OutputDataType','single','SamplesPerFrame',262144,...
'FrequencyCorrection',0);
Tiếp theo, tôi tiến hành thu dữ liệu trực tiếp dữ liệu ADS-B từ tàu bay và gán vào giá trị biến trong Matlab, các dữ liệu này được lưu trữ theo định dạng IQ
% Bỏ comment dòng bên dưới để thu dữ liệu trực tiếp từ phần cứng
% IQSamples = step(RX);
% Thực hiện mở dữ liệu IQ đã thu sẵn
load('ads-b','IQSamples')
Sau khi thu dữ liệu, tôi tiếp thục tiến hành vẽ đồ thị vùng dữ liệu theo thời gian bằng lệnh:
% Create figure
figure1 = figure('Name','Giải mã tín hiệu ADS-B sử dụng Matlab + RTL-SDR');
% Create axes
axes1 = axes('Parent',figure1);
hold(axes1,'on');
% Create plot
plot(abs(IQSamples));
% Create ylabel
ylabel('Cường độ tín hiệu');
% Create xlabel
xlabel('Thời gian (giây)');
% Create title
title('Giải mã tín hiệu ADS-B sử dụng Matlab + RTL-SDR');
box(axes1,'on');
% Set the remaining axes properties
set(axes1,'XGrid','on','YGrid','on');