如何为每个周期生成 50 个样本来处理不均匀的罪恶曲线?

How can I generate 50 samples per period for an uneven sin curve?

提问人:Silvy 提问时间:8/24/2023 最后编辑:Ripi2Silvy 更新时间:8/24/2023 访问量:42

问:

我有一个不均匀的罪恶曲线图,其中标签 x 是“时间”,振幅是 1。我无法弄清楚该功能,因为它是不规则的。我需要在 Matlab 上每秒生成 40 个样本。因此,我需要它所需的功能。谢谢!!

我知道如何求解正常的正弦函数。

这是图!!

enter image description here

MATLAB 数学 绘图

评论

0赞 Tim Roberts 8/24/2023
我们可以看到您的私人 sharepoint 页面。只需将图片添加到您的帖子中,或将其放在一些图像共享服务上即可。
0赞 ravenspoint 8/24/2023
那么,您的曲线每 1 个时间单位重新开始一次?但是波长是时间单位的很大一部分?
0赞 Silvy 8/24/2023
是的,所以我最终必须绘制一个高斯噪声
0赞 ravenspoint 8/24/2023
如果重新启动定期发生,如图像所示,则只需在重新启动间隔内重置正弦发生器的初始条件即可
0赞 Silvy 8/24/2023
呃......我需要 sin 函数,它应该类似于 y = A·sin(B(x)),其中 A 是振幅,B 是周期。对于正弦曲线,它是 2*pi

答:

0赞 bla 8/24/2023 #1

将在图中生成该曲线的函数由下式给出

x = linspace(0,12*pi,1e5) ; % the x-axis 
z = real(-1i*exp( (-1).^floor(x/(4*pi)).*1i.*x)) % the function

plot(x,z)

enter image description here

你可以从这里拿走它......

(我假设你知道复数和 e^ix=cos(x)+i*sin(x) )

0赞 Tim Roberts 8/24/2023 #2

或者:

import numpy as np
import matplotlib.pyplot as plt

def fn(t):
    return (1 - (int(t/(4*np.pi)) % 2) * 2) * np.sin(t)

x = np.linspace(0,12*np.pi,1000)
data = [fn(t) for t in x]
plt.plot(x,data)
plt.show()

输出:enter image description here