программный перенос спектра

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Есть возможность записать поток данных и АЦП?

Feofan
Сообщения: 19
Зарегистрирован: 20 фев 2017, 22:51
Откуда: Москва

Re: программный перенос спектра

Сообщение Feofan »

Да, возможно записывать квадратурный сигнал с ацп в файл, можно также записать в файл и сигнал после переноса.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Записывайте посмотрю

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Желательно ещё си функцию считывания файла в массив комплексных данных тоже приложить

Feofan
Сообщения: 19
Зарегистрирован: 20 фев 2017, 22:51
Откуда: Москва

Re: программный перенос спектра

Сообщение Feofan »

Оба файла с частотой дискретизации 1,4 МГц, формат данных 8 бит.
Сигнал с ацп https://yadi.sk/d/1aMZTRsi3YXFMt.
Сдвинутый сигнал https://yadi.sk/d/swGRPLgb3YXFdM.
Немного не понял какая функция нужна. Функция считывания данных с приемника и формирования квадратурного сигнала в виде массива?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Ок функция не нужна. Я думал будет какой то специфический формат файла.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Я завтра постараюсь посмотреть.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Посмотрел ваши файлы.
В вашем программном переносе частоты где -то явно ошибка.
Вот скрипт из Octave которым анализировал ваши файлы

Код: Выделить всё

clear all; close all; clc;
pkg load signal;


% читаю стерео сигнал с ацп из файла
[adc, Fs, Nbits] = wavread('adc.wav');

% перевожу стерео из файла в один комплексный сигнал
adc = adc(:,1) + 1i * adc(:,1);

% ограничил. для спектра миллиона сэмплов достаточно
adc = adc(1:1E6);

% программное смещение на +100 кГц
y = adc.*exp(2i * pi * 1e5/Fs * (0:length(adc)-1)');

% читаю стерео сдвинутый сигнал из файла
[shf, Fs, Nbits] = wavread('shift.wav');

% перевожу стерео из файла в один комплексный сигна
shf = shf(:,1) + 1i * shf(:,1);

% ограничил. для спектра миллиона сэмплов достаточн
shf = shf(1:1E6);

% Строю спектры для считанных сигналов и программно смещенного
NFFT = 2048;
w = hamming(NFFT)';

[ADC, f] = pwelch(adc, w, 0.5, NFFT, Fs, 'shift');
[SHF, f] = pwelch(shf, w, 0.5, NFFT, Fs, 'shift');
[Y,   f] = pwelch(y,   w, 0.5, NFFT, Fs, 'shift');

 f = f/1000;

figure; plot(f, 10*log10(ADC), f, 10*log10(SHF), f, 10*log10(Y));
grid on;
axis([-Fs/2e3, Fs/2e3, -80, -30]);
xlabel('frequency, kHz');
ylabel('magnitude, dB');
legend('АЦП из файла','смещение из файла', 'программно сдвинутый');

В результате получил график:
freqshift.png
Из графика видно что сигнал с ацп смещается на 100 кГц если я его умножаю на экспоненту как в коде

Код: Выделить всё

% программное смещение на +100 кГц
y = adc.*exp(2i * pi * 1e5/Fs * (0:length(adc)-1)');
Смещенный спектр из вашего файла совсем не похож. Значит ошибка в вашем программном переносе.
Если хотите, то могу вам помочь путем написания функции частотного смещения в свою либу, вы ее подключите и сможете использовать. Там кстати есть уже алгоритмы готовые цифровой фильтрации и FFT (чуть проигрывают матлабовским и FFTW но не такие монструозные).

Feofan
Сообщения: 19
Зарегистрирован: 20 фев 2017, 22:51
Откуда: Москва

Re: программный перенос спектра

Сообщение Feofan »

Спасибо за столь подробный ответ.
От предложения откажусь, надо все таки разобраться и самостоятельно реализовать функцию переноса - требования диплома, но все равно спасибо.
P.S.
У вас спектр почему то получился симметричный, хотя сигнал комплексный.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 952
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: программный перенос спектра

Сообщение Бахурин Сергей »

Ну это не у меня спектр симметричный . Это такие данные вы прислали :roll:

Ответить