Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 10.10.2019, 20:41   #176
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,530
Вес репутации: 4887/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Амплитуды считает правильно (1000,500,250), выходные преобразуем BIN*2/FFTSIZE, а на фазовый сдвиг (30,45,60) никакой реакции.
Код:
Buf[j] = ( 
 1000.0 * sin(2.0 * 3.14159 * i * 1.0/ SAMPLES + 2.0 * 3.14159 * 30.0 / 360.0) 
+ 500.0 * sin(2.0 * 3.14159 * i * 2.0/ SAMPLES + 2.0 * 3.14159 * 45.0 / 360.0)
+ 250.0 * sin(2.0 * 3.14159 * i * 3.0/ SAMPLES + 2.0 * 3.14159 * 60.0 / 360.0)); // Re.
Buf[j+1] = 1; // Im.

testOutput[0] = 64.000023
testOutput[1] = 31999.978516
testOutput[2] = 16000.010742
testOutput[3] = 8000.039551
testOutput[4] = 0.046386
...
testOutput[60] = 0.046386
testOutput[61] = 8000.039062
testOutput[62] = 16000.010742
testOutput[63] = 31999.976562
Код:
 arm_cmplx_mag_f32(Buf, testOutput, fftSize);
 arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
 Amp=(float) 2*maxValue/fftSize;     
 for(int i=0;i<64;i++)   
{ printf("testOutput[%d] = %f\n", i, testOutput[i]); }// Спектр на печать.
Откуда тут возмется фазовый сдвиг? если тут уже модуль комплексного числа?

Да и обнулять мнимую часть ты научился еще в 2014 году, но сейчас почему-то 1 ставишь....

Последний раз редактировалось ampersant; 10.10.2019 в 20:49.
ampersant вне форума   Ответить с цитированием
Старый 10.10.2019, 21:45   #177
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от ampersant Посмотреть сообщение
Код:
 arm_cmplx_mag_f32(Buf, testOutput, fftSize);
 arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
 Amp=(float) 2*maxValue/fftSize;     
 for(int i=0;i<64;i++)   
{ printf("testOutput[%d] = %f\n", i, testOutput[i]); }// Спектр на печать.
Откуда тут возмется фазовый сдвиг? если тут уже модуль комплексного числа?
Это Марк думал, что комплексное БПФ даст на выходе две половины спектра, при этом если фаза (например, первой гармоники) не равна нулю, то действительная часть и мнимая в комплексном спектре будет отличаться (т.о. комплексный спектр у Марка должен был содержать информацию о фазе). Комплексный спектр - это такая абстракция, гармоники в нем являются комплексно сопряженными, т.е. спектр симметричный. На выходе БПФ есть комплексный спектр амплитуд. Никаких фаз и информации о них там нет.

Фазы отдельных гармоник можно посчитать до вычисления амплитуд внутри алгоритма ДПФ, я решение выкладывал, еще выложу
Код:
float dft(float *Data, int Size, int G, float *Angel)
{
float SinTab[Size]={0};
float CosTab[Size]={0};
float Re = 0, Im = 0;
float Amp = 0;

for(int i = 0;i<Size;i++) 
{
    SinTab[i] = sin(2*M_PI*i*G/Size);
    CosTab[i] = cos(2*M_PI*i*G/Size);
    
    Re += Data[i]*SinTab[i];
    Im += Data[i]*CosTab[i];
}

Re /= (Size/2);
Im /= (Size/2);
//*Angel = atan(Im/Re); // Radian.
*Angel = atan(Im/Re)*180.0/M_PI; // Degree.

Amp = sqrt(Re*Re+Im*Im);

return Amp;
 }

 #define SAMPLES 64
float Input[SAMPLES] = {0};
float Amp = 0;
float Angel = 0;

int main(int argc, char** argv) {

fstream fs("Result.txt", ios::in | ios::out | ios::trunc);   

for(int i=0;i<SAMPLES;i++)
  { Input[i] = 1000.0 * sin(2.0 * 3.14159 * i / SAMPLES + 2.0 * 3.14159 * 45.0 / 360.0); }

float Amp = dft(Input, SAMPLES, 1, &Angel);

fs << "Amp = " << Amp << endl;
fs << "Angel = " << Angel << endl;

fs.close();
getch();
return 0;
}

Amp = 1000
Angel = 44.9998
Цитата:
Сообщение от ampersant Посмотреть сообщение
Да и обнулять мнимую часть ты научился еще в 2014 году, но сейчас почему-то 1 ставишь....
Мнимая должна быть равна нулю, это у меня опечатка.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 10.10.2019, 22:34   #178
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,494
Вес репутации: 2750/82
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Да бляха медная, парни... Кажется даже я уже понял, что результат (спектр), в общем случае, будет симметричным, и, если это звук, надо смотреть верхнею половину дампа ибо нижней у него заведомо нет
Кстати, Марк простите нуба, но что на самом деле представляет из себя однополосная амплитудная модуляция там же на приемной стороне фазовых артефактов должна быть полна задница
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 11.10.2019, 06:34   #179
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,530
Вес репутации: 4887/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от pal1222@yandex.ru Посмотреть сообщение
Да бляха медная, парни... Кажется даже я уже понял, что результат (спектр), в общем случае, будет симметричным, и, если это звук, надо смотреть верхнею половину дампа ибо нижней у него заведомо нет
Кстати, Марк простите нуба, но что на самом деле представляет из себя однополосная амплитудная модуляция там же на приемной стороне фазовых артефактов должна быть полна задница
За Марка отвечать на вопрос не буду, отвечу на другой вопрос, как выглядит частично подавленная левая боковая амплитудной модуляции. Это умирающее аналоговое ТВ так работало. правая боковая - полностью, левая за частотой -1.25Мгц от несущей - подавление. Чтобы упростить телевизоры, решено было фазовую коррекцию устанавливать 1 раз в передатчике, это лучше чем в каждый телевизор.
Накрутился в свое время этих корректоров...
Что из себя представляет фазовый предкорректор: 5- 6 последовательных звеньев фазовращателей, у каждого настройка амплитуды, задержки(она же фаза) и центральной частоты. Без него верхние частоты опережают нижние по фазе, т.е. переходка вверх выглядит сначала провалом на 30-40% вниз, потом плавный подъем вверх. Без фазового корректора невозможно загнать передатчик в нормы по переходке, и по ГВЗ.
ampersant вне форума   Ответить с цитированием
Старый 11.10.2019, 07:06   #180
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Комплексный спектр - это такая абстракция, гармоники в нем являются комплексно сопряженными, т.е. спектр симметричный. На выходе БПФ есть комплексный спектр амплитуд. Никаких фаз и информации о них там нет.
Поток сознания. Комментировать нечего. Еще раз предлагаю сесть за парту и открыть учебник по теории сигналов, а прежде по мат.анализу. Читать этот гомерический бред уже надоело. В цитате можно было выделить красным вообще все. Я постеснялся...

Последний раз редактировалось Марк; 11.10.2019 в 07:12.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 07:11   #181
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от pal1222@yandex.ru Посмотреть сообщение
Кстати, Марк простите нуба, но что на самом деле представляет из себя однополосная амплитудная модуляция там же на приемной стороне фазовых артефактов должна быть полна задница
Однополосная амплитудная модуляция представляет из себя разновидность угловой модуляции. При узкополосном сигнале типа звука на КВ-УКВ и выше диапазонах никаких особых проблем с фазовыми искажениями тракта обычно нет.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 09:03   #182
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Марк Посмотреть сообщение
Поток сознания. Комментировать нечего. Еще раз предлагаю сесть за парту и открыть учебник по теории сигналов, а прежде по мат.анализу. Читать этот гомерический бред уже надоело. В цитате можно было выделить красным вообще все. Я постеснялся...
Марк, давайте все вместе разберемся, раз уж есть с кем обсудить. У меня нет цели всех научить, просто хочется повысить свой уровень, если я где-то ошибся.

Про спектр. Начнем с ДПФ 64-x точечного.
1) Имеем входной массив из 64 точек int16_t Input[64].

2) Для каждой гармоники, для каждой точки выборки (умножение с накоплением), получается каждая гармоника в виде комплексного числа:
Re += Input[i]*SinTab[i];
Im += Input[i]*CosTab[i];
3) Затем считаем модуль вектора (она же амплитуда) каждой гармоники Amp=sqrt(Re*Re + Im*Im); из этих Amp состоит спектр!!!
4) При необходимости считаем фазу в градусах Phase = atan(Im/Re)*180.0/M_PI;

Могу задать и обработать реальный входной массив из 64-х точек, чтобы показать, что метод работает, амплитуда и фаза заданного сигнала определяется хорошо.

БПФ позволяет ускорить вычисление амплитуд, т.е. Amp, при этом информация о фазе отсутствует.

Где я ошибся?
Миниатюры
Картинки.png  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 11.10.2019 в 09:19.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 09:31   #183
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,683
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
БПФ позволяет ускорить вычисление амплитуд, т.е. Amp, при этом информация о фазе отсутствует.

А в ДПФ?
DimaS вне форума   Ответить с цитированием
Старый 11.10.2019, 09:35   #184
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Марк, давайте все вместе разберемся, раз уж есть с кем обсудить. У меня нет цели всех научить, просто хочется повысить свой уровень, если я где-то ошибся.
Ваша ошибка состоит в том, что Вы НИЧЕГО НЕ ИЗУЧАЕТЕ и НИ В ЧЕМ НЕ РАЗБИРАЕТЕСЬ, заменяя эти достойные занятия на рандомные применения чужих "черных ящиков".
При этом совершенно не владея терминологией и базовыми понятиями предмета рассмотрения.
В чем я должен разбираться с Вами? Как правильно использовать чью то библиотеку, разобраться с исходным кодом которой Вы не в состоянии?
Увольте. На это у меня нет ни интереса, ни воли, ни времени.
Вы взрослый человек и в состоянии самостоятельно открыть учебник и разобрать чужой исходник.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 09:44   #185
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Для каждой гармоники, для каждой точки выборки (умножение с накоплением), получается каждая гармоника в виде комплексного числа:
Re += Input[i]*SinTab[i];
Im += Input[i]*CosTab[i];
Вообще то еще и оконную функцию следует применить. Иначе на выходе будет полная херня уже примерно с -20 дБ. У прямоугольного окна очень большие боковые лепестки.
Про нормировку я уже не говорю...
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 09:54   #186
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Re += Input[i]*SinTab[i];
Im += Input[i]*CosTab[i];
Только что заметил.
Вообще то Sin - это мнимая часть, а Cos - вещественная.
У Вас перепутано все.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 10:01   #187
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Марк Посмотреть сообщение
Вообще то еще и оконную функцию следует применить. Иначе на выходе будет полная херня уже примерно с -20 дБ. У прямоугольного окна очень большие боковые лепестки.
Про нормировку я уже не говорю...
Марк, для упрощения допустим, что окно прясоугольное (каждый отсчет умножаем на 1). Т.е. оно есть.
20 дБ - это 10 раз. В моих расчетах сигнал с амплитудой 1000, определяется как 1000, а шумы меньеше 1, т.е. хрень эти ваши заявления про ошибки на -20дБ.

Цитата:
Сообщение от Марк Посмотреть сообщение
Только что заметил.
Вообще то Sin - это мнимая часть, а Cos - вещественная.
У Вас перепутано все.
Пусть, но это сути не меняет. Фаза будет не 45, а -45 градусов.

Вот расчет с прямоугольным окном для трех сигналов:
Код:
Buf[i] = ( 
 1000.0 * sin(2.0 * 3.14159 * i * 1.0/ SAMPLES + 2.0 * 3.14159 * 30.0 / 360.0) 
+ 500.0 * sin(2.0 * 3.14159 * i * 2.0/ SAMPLES + 2.0 * 3.14159 * 45.0 / 360.0)
+ 250.0 * sin(2.0 * 3.14159 * i * 3.0/ SAMPLES + 2.0 * 3.14159 * 60.0 / 360.0));

testOutput[0] = 0.001642
testOutput[1] = 999.999329
testOutput[2] = 500.000336
testOutput[3] = 250.001236
testOutput[4] = 0.001450
testOutput[5] = 0.000946
testOutput[6] = 0.000708

testOutput[58] = 0.000713
testOutput[59] = 0.000946
testOutput[60] = 0.001450
testOutput[61] = 250.001221
testOutput[62] = 500.000336
 testOutput[63] = 999.999268

Неужели ваш метод на Ассемблере для PIC24 дает большие ошибки?
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 11.10.2019 в 10:13.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 11:17   #188
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

На ассемблере на dsPIC33 я считаю на фикспойнтах. Аккумулятор 40 разрядов, отсчеты 12 разрядные знаковые. Мне точности хватает.
С прямоугольным окном соседние фильтры видят сигнал. Хорошо видят.
Собственно тут и спорить не о чем. Можно сделать одноточечный ДПФ и тупо прогнать ему на вход свип-сигнал. Все сразу и откроется.
Скажем, я делал ДПФ в районе 58 кГц (256 отсчетов - 1 мс накопления). На частотах в районе 60...61 кГц неприемлемая избирательность.

Последний раз редактировалось Марк; 11.10.2019 в 11:22.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 11:22   #189
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Марк Посмотреть сообщение
На ассемблере на dsPIC33 я считаю на фикспойнтах. Аккумулятор 40 разрядов, отсчеты 12 разрядные знаковые. Мне точности хватает.
С прямоугольным окном соседние фильтры видят сигнал. Хорошо видят.
Собственно тут и спорить не о чем. Можно сделать одноточечный ДПФ и тупо прогнать ему на вход свип-сигнал. Все сразу и откроется.
Т.е. для моделирования такого случая нужно в исходном массиве задать частоту между гармониками? Так? Не проще тогда количество точек взять побольше, чтобы более точно определять частоты (повысить разрешение по частоте)?

Согласен, что есть такое, если задать сигнал с частотой между 3 и 4 гармониками, то его видят оба фильтра и соседние тоже.

Цитата:
250.0 * sin(2.0 * 3.14159 * i * 3.5/ SAMPLES + 2.0 * 3.14159 * 60.0 / 360.0));

testOutput[0] = 29.278469
testOutput[1] = 33.652630
testOutput[2] = 52.494503
testOutput[3] = 157.420319
testOutput[4] = 161.466309
testOutput[5] = 55.639118
testOutput[6] = 34.540493
testOutput[7] = 25.489050
testOutput[8] = 20.439373
testOutput[9] = 17.207367
testOutput[10] = 14.956368
testOutput[11] = 13.296965
testOutput[12] = 12.023206
testOutput[13] = 11.015804
testOutput[14] = 10.200750
...
testOutput[50] = 10.200750
testOutput[51] = 11.015808
testOutput[52] = 12.023211
testOutput[53] = 13.296967
testOutput[54] = 14.956368
testOutput[55] = 17.207367
testOutput[56] = 20.439373
testOutput[57] = 25.489050
testOutput[58] = 34.540493
testOutput[59] = 55.639118
testOutput[60] = 161.466309
testOutput[61] = 157.420319
testOutput[62] = 52.494503
testOutput[63] = 33.652630
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 11:27   #190
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Т.е. для моделирования такого случая нужно в исходном массиве задать частоту между гармониками? Так? Не проще тогда количество точек взять побольше, чтобы более точно определять частоты (повысить разрешение по частоте)?
Это ничего не меняет, во первых. И, во вторых, оконная функция - это элементарная математика встроенная в архитектуру DSP блока МК. Зачем поднимать частоту и бестолково расходовать ОЗУ?
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 11:36   #191
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Марк Посмотреть сообщение
Это ничего не меняет, во первых. И, во вторых, оконная функция - это элементарная математика встроенная в архитектуру DSP блока МК. Зачем поднимать частоту и бестолково расходовать ОЗУ?
Марк, я знаю, что такое оконная функция. Понял, о чем вы (при слабом разрешении по частоте это хорошо видно). Имхо, я бы поднял разрешение по частоте. Тот же STM32 и CMSIS DSP Library умеет считать до FFT до 1024-х точечного. Вопрос в том, как часто нужно пересчитывать. Частота 3,5.
Миниатюры
Частота 3.5.png  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 12:05   #192
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Имхо, я бы поднял разрешение по частоте.
Я не воспринимаю подобные предложения. Они лишены всяких обоснований. Предельная частота одного АЦП у примененного МК на 12 разрядах составляет 500 кспс. У меня учетверенная частота семплирования по отношению к принимаемому сигналу - примерно 240 кспс. Мне этого хватает. Каналов приема у меня 6. Сейчас на каждый канал требуется всего 256 отсчетов. То есть всего 1536 слов (3 кбайта). Оконная функция Хэмминга отлично решает все мои задачи.
Вами зачем то предлагается учетверить длину массива, повысив разрешение (зачем, если у меня сигнал в полосе 1 кГц?), создав дополнительные проблемы с разбором полос приема, создав проблемы со скоростью преобразования (нужно запускать 2 АЦП в интерливе), нужно учетверить время расчета и т.д. Ради чего? Глупость какая то....
ЗЫ. Чето я заработался... Учетверять частоту не требуется, требуется увеличить время накопления, а это принципиально невозможно. Сигнал есть только в окне 1 мс.

Последний раз редактировалось Марк; 11.10.2019 в 12:11.
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 13:18   #193
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Марк Посмотреть сообщение
Я не воспринимаю подобные предложения. Они лишены всяких обоснований. Предельная частота одного АЦП у примененного МК на 12 разрядах составляет 500 кспс. У меня учетверенная частота семплирования по отношению к принимаемому сигналу - примерно 240 кспс. Мне этого хватает. Каналов приема у меня 6. Сейчас на каждый канал требуется всего 256 отсчетов. То есть всего 1536 слов (3 кбайта). Оконная функция Хэмминга отлично решает все мои задачи.
У вас dsPIC33 у вас используется хорошо. На такой частоте еще и считать периодически нужно. Я только не очень понял, зачем вам 6 каналов приема? Да еще и сигнал в полосе 1 кГц (речь про шесть сигналов или один сигнал)Из-за разброса по частоте источника сигнала.

Цитата:
Сообщение от Марк Посмотреть сообщение
Вами зачем то предлагается учетверить длину массива, повысив разрешение (зачем, если у меня сигнал в полосе 1 кГц?), создав дополнительные проблемы с разбором полос приема, создав проблемы со скоростью преобразования (нужно запускать 2 АЦП в интерливе), нужно учетверить время расчета и т.д. Ради чего? Глупость какая то....
ЗЫ. Чето я заработался... Учетверять частоту не требуется, требуется увеличить время накопления, а это принципиально невозможно. Сигнал есть только в окне 1 мс.
Я вообще думал, что вам ребуется разделить каналы приема.Вот картинка предыдущая с прямоугольным окном и с окном Хэмминга. Последняя покрасивее, но амплитуда поменьше.
Миниатюры
Прямоугольное & Хэмминга.png  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 13:57   #194
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,683
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Я вообще думал, что вам ребуется разделить каналы приема.Вот картинка предыдущая с прямоугольным окном и с окном Хэмминга. Последняя покрасивее, но амплитуда поменьше.

Окно данных выбирается исходя их того, что хочеться получить


Вот небольшая табличка с одной программки:
Код:
Characteristics of various smoothing  windows
 
 Window            Frequency       Amplitude      Leakage
 Type                 Resolution      Resolution     Suppression         Application
 Bartlett                Fair                 Fair                Moderate   
 Blackman           Fair                 Good              Excellent             Distortion Measurements 
 Flattop                Poor                Excellent        Moderate           Accurate Amplitude measurements
 Hamming            Fair                  Fair                Fair   
 Hanning              Fair                 Excellent        Excellent             Distortion measurements, Noise  measurements
 Kaiser                 Fair                  Fair                  Poor     
 Parzen                Fair                  Fair                 Poor     
 Triangular           Fair                 Fair                 Poor     
 Uniform              Excellent         Poor                Poor                High resolution frequency measurements, Impulse response  measurements
 Gaussian           Excellent         Fair                Fair                  Allows very high frequency  resolution using gaussian interpolation
DimaS вне форума   Ответить с цитированием
Старый 11.10.2019, 14:36   #195
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Я только не очень понял, зачем вам 6 каналов приема?
Мне озвучить технические подробности закрытой документации? К чему это Ваше любопытство? Раз каналов 6, значит надо именно 6.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Я вообще думал, что вам требуется разделить каналы приема.Вот картинка предыдущая с прямоугольным окном и с окном Хэмминга. Последняя покрасивее, но амплитуда поменьше.
Требуется разделить сигнал, а не каналы приема.
И таки вы увидели в каком месте боковые лепестки стали видны. Ну и слава Богу...
Марк вне форума   Ответить с цитированием
Старый 11.10.2019, 17:47   #196
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,453
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Так я не понял..могу я с помощью библиотечного БПФ преобразовать сказанное слово (череда значений с АЦП) в череду амплитуд частотных полос?..
maagalex вне форума   Ответить с цитированием
Старый 11.10.2019, 17:52   #197
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,683
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от maagalex Посмотреть сообщение
Так я не понял..могу я с помощью библиотечного БПФ преобразовать сказанное слово (череда значений с АЦП) в череду амплитуд частотных полос?..

Алекс, я тебе уже писал - поставь на комп SpectraLab, SpectraPlus, WaveSpectra, ARTA, etc, и поговори в микрофон - сам все увидишь.
DimaS вне форума   Ответить с цитированием
Старый 11.10.2019, 21:03   #198
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,494
Вес репутации: 2750/82
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от DimaS Посмотреть сообщение
Алекс, я тебе уже писал - поставь на комп SpectraLab, SpectraPlus, WaveSpectra, ARTA, etc, и поговори в микрофон - сам все увидишь.
ЧиоЧио-сан еслиб зналА
джиуджитсу, дзюдо, карате
тэквандо айкидо и ущу
не случилось бы с ней ничего...
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 11.10.2019, 22:04   #199
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,717
Вес репутации: 4545/132
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от maagalex Посмотреть сообщение
Так я не понял..могу я с помощью библиотечного БПФ преобразовать сказанное слово (череда значений с АЦП) в череду амплитуд частотных полос?..
Да легко, можно хоть шум с улицы преобразовать в спектр. Вопрос, что дальше делать с этим спектром. Как получишь спектр - отпишись.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 11.10.2019, 22:44   #200
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,453
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Быстрое преобразование Фурье. Метод разложения на множители.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Да легко, можно хоть шум с улицы преобразовать в спектр. Вопрос, что дальше делать с этим спектром. Как получишь спектр - отпишись.
Шум то можно, в этом я не сомневаюсь..А вот правильные всплески нужных полос в нужных местах это я не уверен..А дальше то просто, с
микрофон и две кнопки..слово а и слово б, и пусть обучается ..
Цитата:
Сообщение от DimaS Посмотреть сообщение
Алекс, я тебе уже писал - поставь на комп SpectraLab, SpectraPlus, WaveSpectra, ARTA, etc, и поговори в микрофон - сам все увидишь.
Зачем мне все эти страшные слова-у меня есть осциллограф RIGOL с функцией разложения фурье, но кто его знает что там напихано-а вопрос был про стандартную библиотечную функцию для контроллеров..
maagalex вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 1 , гостей: 1)
RuSerg
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
подключение магнитолы Sergey1 Общетехнические вопросы 10 27.12.2007 22:39
Помогите, пожалуйста, найти ошибку в коде Катя Микроконтроллеры других производителей 26 08.12.2007 14:58
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 14:57.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot