Подскажите, пожалуйста, что у меня вообще происходит?
Вроде я не глупый в этом плане. У меня есть символ OFDM 900 выборок. Он интерполированный с частоты 20480 Гц на частоту 18000 Гц, но это, я думаю, не суть важно.
Мне нужно выделить одну его гармонику полосовым фильтром. Разнос между гармониками 20 Гц.
Я сделал n = 200 порядок фильтра, ведь если меньше - его полоса будет очень большая. Тогда мне нужно 200 выборок пропустить - я смиряюсь с этим, и просто дублирую OFDM-символ, чтобы в конце фильтрации взять из середины целый OFDM-символ для дальнейшего анализа. Возможно, все получилось, как и следовало, но я не удовлетворен, потому что а рисунке вы видите ну никак не гармонический сигнал, а мне бы гармонику получить... Ну ок, может это несколько гармоник. Как мне сделать такую фильтрацию, чтобы у меня реально только одна гармоника была? Как это проще сделать?
Код
clc; clear all; close all;
f=fopen('OFDM.CMV','rt');
OFDM = [];
for i = 1:954
str1 = (fgetl(f));
OFDM = [OFDM str2num(str1)];
end;
fclose(f);
OFDM_noisy = awgn(OFDM,20);
plot(OFDM); hold on; plot(OFDM_noisy); hold off;
Fd=18e3;% частота дискретизации
W1=2.6e3/(0.5*Fd);%нижняя частота полосового фильтра 3КГц
W2=2.600001e3/(0.5*Fd);%верхняя частота полосового фильтра 5КГц
f=0:Fd/2;%полоса частот до частоты Найквиста
n=200;%порядок фильтра
k=hann(n+1);%расчет окна Ханна
b=fir1(n, [W1 W2], k);%расчет коэффициентов фильтра
hi=impz(b, 1);%расчет импульсной характеристики
OFDM1 = [OFDM OFDM OFDM OFDM OFDM OFDM]
OFDM_1freq = conv(hi,OFDM1);
figure; plot(OFDM_1freq); grid on;
%dlmwrite('./OFDM_noisy.CMV', OFDM_noisy);
f=fopen('OFDM_noisy.CMV','wt');
for i = 1:954
count = fprintf(f, '%s\n', OFDM_noisy(i));
end
fclose(f);
Заметьте, если сделать n = 2000, и размножить еще число OFDM-символов, то где-то в середине я получаю следующее:
Но обратите внимание на биения. Откуда они получаются?
Тогда я просто перешел на гармонический сигнал. У исходного сигнала гармонического биения. Заметьте, если рассматривать построение синусоиды - тут моя непонятка, мой пробел, потому что я думаю, что до половины частоты дискретизации биений и быть не может, только гармоника... Где загвоздка?
Код
Fd=18e3;% частота дискретизации
W1=3.6e3/(0.5*Fd);%нижняя частота полосового фильтра 3КГц
W2=3.7e3/(0.5*Fd);%верхняя частота полосового фильтра 5КГц
f=0:Fd/2;%полоса частот до частоты Найквиста
n=100;%порядок фильтра
k=hann(n+1);%расчет окна Ханна
b=fir1(n, [W1 W2], k);%расчет коэффициентов фильтра
hi=impz(b, 1);%расчет импульсной характеристики
k = 1:900;
OFDM = cos(2*pi*3.5e3*k/Fd);
OFDM_1freq = conv(hi,OFDM);
figure; plot(OFDM_1freq); grid on;
figure; plot(OFDM)