Как сделать неравную синусоидальную волну? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть вопрос «новичка», связанный с основами математики.Я пытаюсь создать синусоидальную волну с «неравными радианами» (по крайней мере, я считаю, что это то, что я пытаюсь сделать).Другими словами: мне нужна функция, которая для первых двух периодов (x) «быстрее» и постепенно замедляется («циклы» шире / длиннее) по мере приближения x к бесконечности.Вот код и эскиз того, что я пытаюсь сделать:

x <- seq(1, 30, by=0.1)  # my x

z <- ifelse(x <= 10, 3, ifelse(x <= 20, 2, 1))  # discrete value to modify x

y <- sin(z*x)  # my y(x)

plot(y, type="l")  # plot y(x)

и эскиз (результат plot):

enter image description here

Игнорируйте «двойной пик» и другие искажения, они являются результатом того факта, что z является дискретной переменной.Я хотел бы сделать z непрерывным и плавно расширять каждый цикл.Какую математическую функцию я должен использовать здесь?Я пробовал затухать синусоиды, но это не совсем то, что я собираюсь.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Прямая транскрипция со страницы Википедии , на которую ссылается @keziah: вот функция

chirp <- function(t,phi0=0,f0=1,k=1) sin(phi0 + 2*pi*(f0*t+k*t^2/2))
  • phi0 - начальная фаза
  • k - скоростьизменения частоты или бодрости.
  • f0 - начальная частота
 par(las=1,bty="l",mfrow=c(1,2))
 curve(chirp(x),from=0,to=5,n=501)
 curve(chirp(x,k=-1,f0=5),from=0,to=5,n=501)

enter image description here

0 голосов
/ 15 февраля 2019

На самом деле это не полный ответ, так как я не могу дать вам код на макушке, но то, что вы ищете здесь, это щебетание.Существует несколько различных типов звуковых сигналов, в зависимости от скорости изменения фазы, которую вы хотите, но я предполагаю, что вы, вероятно, хотите линейный звуковой сигнал Википедия

R вполне может иметьфункция / модуль, который может обеспечить это уже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...