Перейти к содержанию
    

Создание сигнала с гармониками 2...100 в Матлабе

Привет.

Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сгенерировать Фурье-спектр с псевдо-дельтафункциями на нужных частотах и сделать обратное БПФ. Я так студентам "синтетические спектры" для обработки делал. Потом еще awgn добавить, и будет нормальный псевдосигнал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Многоканальный генератор на матлабе - это три строки

% 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.

 

> генератор - нелинейность - фильтр. Будет сложновато построить фильтр, обеспечивающий заданный набор амплитуд и фаз на выходе.

 

> ОБПФ, как вам писали, но там видится одна проблема - сшивка окон, если возникнет требование изменять частоту основной гармоники. Придется выкручиваться с интерполяцией на выходе обпф. Или напрямую менять частоту отсчетов цап.

 

очень прикольненько и простенько

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пропустить через нелинейность?

Можно подробнее, как это работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. :(

Мама дорогая! Пишем:

help ifft

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет.

Вопрос - как сгенерировать сигнал 50 Гц с гармониками со 2-ой по 100-ую (т.е. до 5кГц) в Симулинке без применения сотни генераторов синусов. С различными амплитудами и фазами. Частота дискретизации(sample time) 20мкс.

 

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

 

Симулинк с векторами работает также как и с одномерными сигналами, ваш один простенький DSP генератор также может генерировать 100 синусов, т. е. не требуется рисовать 100 генераторов, они автоматически размножаются под размерность сигнала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пропустить через нелинейность?

Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LPF{ ( 1 + cos(wt) ) * sign(cos( wt )) }

 

Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))

естественно :) Embedded Block и немного кода :)

 

Можно подробнее, как это работает?

cos(x)^2 = 1/2*(1+cos(2x));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С различными амплитудами и фазами.

пропустить через нелинейность?

cos(x)^2 = 1/2*(1+cos(2x));

Различные фазы так не получить.. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ровно такая, на какую у вас хватит фантазии

https://gmplib.org/

http://www.mpfr.org/

 

Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...