Studying VOR Signals with the RTL-SDR

VHF Omni Directional Radio Range (VOR) signals are used in aviation as a short range radio navigational system. Amateur radio hobbyist F4GKR decided to study these VOR signals by recording them using his RTL-SDR, and then analyzing them in MATLAB. On his post he shows his method of analysis and discusses his results.

VOR Spectrum and Waterfall
VOR Spectrum and Waterfall
Subscribe
Notify of
guest

1 Comment
Inline Feedbacks
View all comments
priyasloka arya

I was trying to replicate the analysis result using 2.4 Ms per second wav file captured by HDSDR provided by the author. I am unable to get 30 Hz signal as achieved by Author.

—————————

% Close all previous figures
close all;
clear;

No_Of_Sample=400000;
[y, Fs, nbits]= wavread(‘HDSDR_20140205_185023Z_115533kHz_RF.wav’,No_Of_Sample);
%[y, Fs, nbits] = wavread(‘HDSDR_20140205_185023Z_115533kHz_RF.wav’);
%Original Sampling is at 2.4 Mhz

Fs_Original=Fs;
%Down Sample to 30Khz
Fs_Downsample=30e3;
%Downsample Factor
Downsample_Factor=(Fs_Original/Fs_Downsample);
%Downsample_Factor=80;
size(y(:,1))
y_d=downsample(y(:,1),Downsample_Factor);
%y_d=decimate(y(:,1),Downsample_Factor);
%y_d= resample(y(:,1),1,Downsample_Factor);
clear y;

% load(‘VOR_30K.mat’);
% clear y_d;
% y_d=out;

Fech = Fs_Downsample ;
L = length(y_d);

freqs = -Fech/2:Fech/L:Fech/2-Fech/L;
plot( freqs,10*log10(abs(fftshift(fft(y_d)))));

xlabel(‘Frequency (Hz)’,’fontsize’,9);
ylabel(‘Level’,’fontsize’,9);

nyq_freq=Fs_Downsample/2;
fc=40;
fn=Fs_Downsample;
cutoff_norm =fc/nyq_freq;
order=12;
fir_coeff = fir1(order, cutoff_norm);
filtered_signal = filter(fir_coeff, 1, y_d);
figure;

plot((filtered_signal));

figure;
plot(abs(fft(filtered_signal)));

grid;
zoom;