syoma 1 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Привет. Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс. Интересует нетрадиционное решение. Можно из области математики. Я помню в DSP генератор синуса можно было реализовать очень прикольненько и простенько на Си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Сгенерировать Фурье-спектр с псевдо-дельтафункциями на нужных частотах и сделать обратное БПФ. Я так студентам "синтетические спектры" для обработки делал. Потом еще awgn добавить, и будет нормальный псевдосигнал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба пропустить через нелинейность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 2 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Многоканальный генератор на матлабе - это три строки % generate 1 output sample phi = phi + dphi; phi = phi - ( phi > pi ) .* ( 2. * pi ) + ( phi <= -pi ) .* ( 2. * pi ); out = sum( mag .* cos( phi )); Вырианты, если три строки - это слишком мало и/или не достаточно наукоемко: > DDS. 1 таблица с периодом синусоиды с нужной частотой дискретизации. Обновляете 100 фазовых аккумуляторов с кратным инкрементом. Частота дискретизации периода в таблице определяет SFDR. > генератор - нелинейность - фильтр. Будет сложновато построить фильтр, обеспечивающий заданный набор амплитуд и фаз на выходе. > ОБПФ, как вам писали, но там видится одна проблема - сшивка окон, если возникнет требование изменять частоту основной гармоники. Придется выкручиваться с интерполяцией на выходе обпф. Или напрямую менять частоту отсчетов цап. очень прикольненько и простенько Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба пропустить через нелинейность? Можно подробнее, как это работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. :( Мама дорогая! Пишем: help ifft Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Привет. Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс. Интересует нетрадиционное решение. Можно из области математики. Я помню в DSP генератор синуса можно было реализовать очень прикольненько и простенько на Си. Симулинк с векторами работает также как и с одномерными сигналами, ваш один простенький DSP генератор также может генерировать 100 синусов, т. е. не требуется рисовать 100 генераторов, они автоматически размножаются под размерность сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба пропустить через нелинейность? Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 2 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба LPF{ ( 1 + cos(wt) ) * sign(cos( wt )) } Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка))) естественно :) Embedded Block и немного кода :) Можно подробнее, как это работает? cos(x)^2 = 1/2*(1+cos(2x)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 25 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба С различными амплитудами и фазами. пропустить через нелинейность? cos(x)^2 = 1/2*(1+cos(2x)); Различные фазы так не получить.. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 2 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Ровно такая, на какую у вас хватит фантазии https://gmplib.org/ http://www.mpfr.org/ Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Понятно, за границы double пока не выходил, небыло необходимости Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться