реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Создание сигнала с гармониками 2...100 в Матлабе, Эффективный вариант
syoma
сообщение Apr 20 2016, 07:31
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



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

Интересует нетрадиционное решение. Можно из области математики. Я помню в DSP генератор синуса можно было реализовать очень прикольненько и простенько на Си.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Apr 20 2016, 07:37
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Сгенерировать Фурье-спектр с псевдо-дельтафункциями на нужных частотах и сделать обратное БПФ. Я так студентам "синтетические спектры" для обработки делал. Потом еще awgn добавить, и будет нормальный псевдосигнал.
Go to the top of the page
 
+Quote Post
syoma
сообщение Apr 20 2016, 07:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Дело в том, что "сделать обратное БПФ" я только генераторами синусов и умею. sad.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 20 2016, 08:29
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



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


--------------------
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Apr 20 2016, 08:31
Сообщение #5


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Многоканальный генератор на матлабе - это три строки
Код
% 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) *
очень прикольненько и простенько
Go to the top of the page
 
+Quote Post
syoma
сообщение Apr 20 2016, 08:37
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



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

Можно подробнее, как это работает?
Go to the top of the page
 
+Quote Post
Эдди
сообщение Apr 20 2016, 10:59
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



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

Мама дорогая! Пишем:
Код
help ifft
Go to the top of the page
 
+Quote Post
petrov
сообщение Apr 20 2016, 12:27
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



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

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


Симулинк с векторами работает также как и с одномерными сигналами, ваш один простенький DSP генератор также может генерировать 100 синусов, т. е. не требуется рисовать 100 генераторов, они автоматически размножаются под размерность сигнала.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Apr 20 2016, 12:41
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



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

Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Apr 20 2016, 14:48
Сообщение #10


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



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

Цитата(Serg76 @ Apr 20 2016, 16:41) *
Тогда это должна быть нелинейность, которая описывается полиномом 100-го порядка)))
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 20 2016, 14:53
Сообщение #11


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(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));


--------------------
Go to the top of the page
 
+Quote Post
Serg76
сообщение Apr 20 2016, 15:33
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Какова же будет точность представления амплитуды 100-ой гармоники, которая пропорциональна ~(100!)^-1?
Go to the top of the page
 
+Quote Post
blackfin
сообщение Apr 20 2016, 15:35
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(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
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Apr 20 2016, 15:46
Сообщение #14


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Ровно такая, на какую у вас хватит фантазии
https://gmplib.org/
http://www.mpfr.org/

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

Go to the top of the page
 
+Quote Post
Serg76
сообщение Apr 20 2016, 17:08
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Понятно, за границы double пока не выходил, небыло необходимости
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016