Math 在正弦波中找到每个周期的起点(时间)
我打算在Math 在正弦波中找到每个周期的起点(时间),math,waveform,sine-wave,Math,Waveform,Sine Wave,我打算在5秒内实现正弦波从8Hz逐渐变为2Hz: 此波形是在冷编辑中生成的。我给它的起始频率是8Hz,结束频率是2Hz,持续时间是5秒。在给定的时间内,正弦波从一个频率逐渐变化到另一个频率 我的问题是,如何使用FOR循环准确地找到每个循环的开始时间(用红点突出显示) 伪代码: time = 5 //Duration freq1 = 8 //Start frequency freq2 = 2 //End frequency cycles = ( (freq1 + freq2) / 2
5
秒内实现正弦波从8Hz
逐渐变为2Hz
:
此波形是在冷编辑中生成的。我给它的起始频率是8Hz
,结束频率是2Hz
,持续时间是5
秒。在给定的时间内,正弦波从一个频率逐渐变化到另一个频率
我的问题是,如何使用FOR循环准确地找到每个循环的开始时间(用红点突出显示)
伪代码:
time = 5 //Duration
freq1 = 8 //Start frequency
freq2 = 2 //End frequency
cycles = ( (freq1 + freq2) / 2 ) * time //Total number of cycles
for(i = 0; i < cycles; i++) {
/* Formula to find start time of each cycle */
}
time=5//持续时间
频率1=8//启动频率
频率2=2//结束频率
周期=((频率1+频率2)/2)*时间//周期总数
对于(i=0;i
这是对这个问题的逆向思考,它会导致程序中的疯狂。更不用说单个波将不会是正弦波,因为频率正在改变(它们将略微失真),这是您用发电机无法实现的,而且结束信号在5秒后零点停止的可能性非常小。改为使用可变频率的连续正弦波:
f0=8 [Hz] start frequency
f1=2 [Hz] stop frequency
T =5 [s] change time
t =<0,T> is actual time in [s]
此处示例输出(n=图像宽度
):
如果还需要周期数,则在角度切割的同时在循环中添加计数器增量,同时也存在零点(但如果采样器太小或需要高精度,则需要插值实际零位置)
@DavidTansey符号变化将检测到所有过零,其中只有一半是
相位=0
,但我认为问题在于生成这样的信号,而不是找到过零。这只是一个新手尝试通过产生单独的正弦波来达到这个目的,这是错误的。令人惊讶的详细答案和绝对正确(没有双关语的意图)。明亮的
f0=8 [Hz] start frequency
f1=2 [Hz] stop frequency
T =5 [s] change time
t =<0,T> is actual time in [s]
dt=T/double(n-1);