stm32f4 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Всем привет) Народ подскажи , существует ли возможность генерации значений синуса?например какаяниб функция, которая будет генерировать синус заданной амплитуды с определенным кол точек!Как можно проще сделать фазовый сдвиг, этого синуса ? Само сбой можно заранее заготовить массивы значений и потом делить/умножать его, но этот вариант мне не совсем подходит( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Проверенная временем A * sin(t + f) не подходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Всем привет) Народ подскажи , существует ли возможность генерации значений синуса?например какаяниб функция, которая будет генерировать синус заданной амплитуды с определенным кол точек!Как можно проще сделать фазовый сдвиг, этого синуса ? Само сбой можно заранее заготовить массивы значений и потом делить/умножать его, но этот вариант мне не совсем подходит( в си есть библиотека math.h . Там есть функция синуса, косинуса . Используйте. float p = 2 * 3.141592653589 / 8; // будет 8 отсчетов на период for(i=0; i<64; i++) { Re = A*cos(p * i); // заполняем действительную часть сигнала Im = 0.0; // заполняем мнимую часть сигнала } зы пример из проверки 64 точечного БПФ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба но этот вариант мне не совсем подходит(Чем не подходит? Еще можно генерить по алгоритму Герцеля. Пример тут и тут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Чем не подходит? Еще можно генерить по алгоритму Герцеля. Пример тут и тут ...можно... Но я его так для integer и не научился эффективно применять. Это для fix или float скорее. Можно еще дифуром генерить - сопряженные полюса на единичной окружности и вуаля. Я тут недавно ссылку на книгу Роде и Шварца приводил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Это для fix или float скорее.И чем же нас fixed point не устраивает? коэффициент умножить, результат поделить. Работает прекрасно. sin(), кстати, в целых числах тоже может лишь 1,0,-1 выдавать, значит, вольно или невольно, но фиксированную точку использовать придется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба И чем же нас fixed point не устраивает? коэффициент умножить, результат поделить. Ну нас то устраивает, но если бы все было так просто стал бы стартер спрашивать? Работает прекрасно. sin(), кстати, в целых числах тоже может лишь 1,0,-1 выдавать, значит, вольно или невольно, но фиксированную точку использовать придется. Ну он и в тех трех как бы не совсем целые выдает, но не в этом суть. А в том, что если стартеру нужно очень быстро и сразу в int то быстрее чем на IIR у него не выйдет(ну разве что таблица), но первые значения(переходной процесс) все-равно придется отбрасывать - и перестройка по частоте получается не мгновенная - это да, минус. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба А в том, что если стартеру нужно очень быстро и сразу в int то быстрее чем на IIR у него не выйдет Он еще и фазу хочет двигать.. Не пойдет дифур... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба Он еще и фазу хочет двигать.. Не пойдет дифур... Так чо? Фазу двигать там просто - частоту много сложнее. Дифур пишет в "кольцо", а по кольцу прыгай куда хошь. Этож гармоника. Кстати у простейшего DDS построенного только на таком принципе нет и не может быть никакого "усечения фазы" - это на заметку тем кто разрабатывает "сверхчистые" синтезаторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 14 декабря, 2012 Опубликовано 14 декабря, 2012 · Жалоба ..алгоритм CORDIC. http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 14 декабря, 2012 Опубликовано 14 декабря, 2012 (изменено) · Жалоба Так чо? Тогда вообще красота Y[n+1] = K*Y[n] - Y[n-1] Нестабильность по амплитуде вследствие простой перестройки K можно компенсировать на полупериоде. Кольцо только может быть большим. ..алгоритм CORDIC. С учетом наличия FPU cordic тама suxx :) Изменено 14 декабря, 2012 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stm32f4 0 27 декабря, 2012 Опубликовано 27 декабря, 2012 · Жалоба С учетом наличия FPU cordic тама suxx :) А что такое FPU?Само само собой википедию и многие статьи я прочитал)Но как его применить к генерации синуса- я не оч понял(В даташите по поводу fpu ничего конкретного нет, одни регистры!!! По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 28 декабря, 2012 Опубликовано 28 декабря, 2012 · Жалоба А что такое FPU?Само само собой википедию и многие статьи я прочитал)Вы бы еще на заборе что нибудь почитали :1111493779: По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405((( Смотрим сайт ST ( http://www.st.com/internet/mcu/product/252144.jsp ) The Cortex-M4 core features a Floating point unit (FPU) single precision which supports all ARM single-precision data-processing instructions and data types. It also implements a full set of DSP instructions and a memory protection unit (MPU) which enhances application security. The Cortex-M4 core with FPU will be referred to as Cortex-M4F throughout this document. даташите по поводу fpu ничего конкретного нетЭто надо искать не в DS, а в описании архитектуры Cortex M4 на сайте ARM - http://infocenter.arm.com/help/index.jsp?t...439c/index.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thodnev 0 30 января, 2013 Опубликовано 30 января, 2013 · Жалоба А что такое FPU?Само само собой википедию и многие статьи я прочитал)Но как его применить к генерации синуса- я не оч понял(В даташите по поводу fpu ничего конкретного нет, одни регистры!!! По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405((( Правильно сказали выше. Самая простая функция F(x) = Amp * sin (2*pi*f + alpha) f - частота, Amp - амплитуда, alpha - начальная фаза Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 31 января, 2013 Опубликовано 31 января, 2013 · Жалоба Правильно сказали выше. Самая простая функция F(x) = Amp * sin (2*pi*f*t + alpha) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться