программный перенос спектра
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Есть возможность записать поток данных и АЦП?
Re: программный перенос спектра
Да, возможно записывать квадратурный сигнал с ацп в файл, можно также записать в файл и сигнал после переноса.
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Записывайте посмотрю
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Желательно ещё си функцию считывания файла в массив комплексных данных тоже приложить
Re: программный перенос спектра
Оба файла с частотой дискретизации 1,4 МГц, формат данных 8 бит.
Сигнал с ацп https://yadi.sk/d/1aMZTRsi3YXFMt.
Сдвинутый сигнал https://yadi.sk/d/swGRPLgb3YXFdM.
Немного не понял какая функция нужна. Функция считывания данных с приемника и формирования квадратурного сигнала в виде массива?
Сигнал с ацп https://yadi.sk/d/1aMZTRsi3YXFMt.
Сдвинутый сигнал https://yadi.sk/d/swGRPLgb3YXFdM.
Немного не понял какая функция нужна. Функция считывания данных с приемника и формирования квадратурного сигнала в виде массива?
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Ок функция не нужна. Я думал будет какой то специфический формат файла.
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Я завтра постараюсь посмотреть.
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Посмотрел ваши файлы.
В вашем программном переносе частоты где -то явно ошибка.
Вот скрипт из Octave которым анализировал ваши файлы
В результате получил график: Из графика видно что сигнал с ацп смещается на 100 кГц если я его умножаю на экспоненту как в коде
Смещенный спектр из вашего файла совсем не похож. Значит ошибка в вашем программном переносе.
Если хотите, то могу вам помочь путем написания функции частотного смещения в свою либу, вы ее подключите и сможете использовать. Там кстати есть уже алгоритмы готовые цифровой фильтрации и FFT (чуть проигрывают матлабовским и FFTW но не такие монструозные).
В вашем программном переносе частоты где -то явно ошибка.
Вот скрипт из 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('АЦП из файла','смещение из файла', 'программно сдвинутый');
В результате получил график: Из графика видно что сигнал с ацп смещается на 100 кГц если я его умножаю на экспоненту как в коде
Код: Выделить всё
% программное смещение на +100 кГц
y = adc.*exp(2i * pi * 1e5/Fs * (0:length(adc)-1)');
Если хотите, то могу вам помочь путем написания функции частотного смещения в свою либу, вы ее подключите и сможете использовать. Там кстати есть уже алгоритмы готовые цифровой фильтрации и FFT (чуть проигрывают матлабовским и FFTW но не такие монструозные).
Re: программный перенос спектра
Спасибо за столь подробный ответ.
От предложения откажусь, надо все таки разобраться и самостоятельно реализовать функцию переноса - требования диплома, но все равно спасибо.
P.S.
У вас спектр почему то получился симметричный, хотя сигнал комплексный.
От предложения откажусь, надо все таки разобраться и самостоятельно реализовать функцию переноса - требования диплома, но все равно спасибо.
P.S.
У вас спектр почему то получился симметричный, хотя сигнал комплексный.
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: программный перенос спектра
Ну это не у меня спектр симметричный . Это такие данные вы прислали