Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание сигнала с гармониками 2...100 в Матлабе
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
syoma
Привет.
Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс.

Интересует нетрадиционное решение. Можно из области математики. Я помню в DSP генератор синуса можно было реализовать очень прикольненько и простенько на Си.
Эдди
Сгенерировать Фурье-спектр с псевдо-дельтафункциями на нужных частотах и сделать обратное БПФ. Я так студентам "синтетические спектры" для обработки делал. Потом еще awgn добавить, и будет нормальный псевдосигнал.
syoma
Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. sad.gif
des00
пропустить через нелинейность?
Fat Robot
Многоканальный генератор на матлабе - это три строки
Код
% 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 @ Apr 20 2016, 11:31) *
очень прикольненько и простенько
syoma
Цитата(des00 @ Apr 20 2016, 10:29) *
пропустить через нелинейность?

Можно подробнее, как это работает?
Эдди
Цитата(syoma @ Apr 20 2016, 10:55) *
Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. sad.gif

Мама дорогая! Пишем:
Код
help ifft
petrov
Цитата(syoma @ Apr 20 2016, 10:31) *
Привет.
Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс.

Интересует нетрадиционное решение. Можно из области математики. Я помню в DSP генератор синуса можно было реализовать очень прикольненько и простенько на Си.


Симулинк с векторами работает также как и с одномерными сигналами, ваш один простенький DSP генератор также может генерировать 100 синусов, т. е. не требуется рисовать 100 генераторов, они автоматически размножаются под размерность сигнала.
Serg76
Цитата(des00 @ Apr 20 2016, 11:29) *
пропустить через нелинейность?

Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))
Fat Robot
LPF{ ( 1 + cos(wt) ) * sign(cos( wt )) }

Цитата(Serg76 @ Apr 20 2016, 16:41) *
Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))
des00
Цитата(Serg76 @ Apr 20 2016, 19:41) *
Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))

естественно sm.gif Embedded Block и немного кода sm.gif

Цитата(syoma @ Apr 20 2016, 15:37) *
Можно подробнее, как это работает?

cos(x)^2 = 1/2*(1+cos(2x));
Serg76
Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1?
blackfin
Цитата(syoma @ Apr 20 2016, 11:31) *
С различными амплитудами и фазами.

Цитата(des00 @ Apr 20 2016, 12:29) *
пропустить через нелинейность?

Цитата(des00 @ Apr 20 2016, 18:53) *
cos(x)^2 = 1/2*(1+cos(2x));

Различные фазы так не получить.. rolleyes.gif
Fat Robot
Ровно такая, на какую у вас хватит фантазии
https://gmplib.org/
http://www.mpfr.org/

Цитата(Serg76 @ Apr 20 2016, 19:33) *
Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1?

Serg76
Понятно, за границы double пока не выходил, небыло необходимости
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.