C++ 为DFT生成方波

C++ 为DFT生成方波,c++,visual-c++,signal-processing,dft,C++,Visual C++,Signal Processing,Dft,我正在做一项任务,在频率为500Hz的方波上,以20kHz的采样频率进行200点DFT,其振幅在0和20之间交替 我用C++,我已经知道如何编码DFT方程,我的问题是,用for循环表示代码中的方波有麻烦。 我仍然困惑的是,在我的200点样本中,这个方波会有多少个周期 感谢方波的周期是20000/500=40点,因此在200点样本中正好有5个方波周期(200/40=5)。方波的周期是20000/500=40点,所以在200点样本中正好有5个方波周期(200/40=5)。方波的一个周期将花费1/50

我正在做一项任务,在频率为500Hz的方波上,以20kHz的采样频率进行200点DFT,其振幅在0和20之间交替

<>我用C++,我已经知道如何编码DFT方程,我的问题是,用for循环表示代码中的方波有麻烦。 我仍然困惑的是,在我的200点样本中,这个方波会有多少个周期


感谢方波的周期是
20000/500=40
点,因此在200点样本中正好有5个方波周期(
200/40=5
)。

方波的周期是
20000/500=40
点,所以在200点样本中正好有5个方波周期(
200/40=5
)。

方波的一个周期将花费1/500秒。每个样本将是1/20000秒。简单的除法应该可以告诉您每个方波将有多少个样本


另一个除法将告诉您200点窗口中可以容纳多少个方波。

方波的一个周期将花费1/500秒。每个样本将是1/20000秒。简单的除法应该告诉您每个方波将包含多少个样本


另一个分区将告诉您200点窗口中可以容纳多少个波。

如果您的采样频率为20000 Hz,并且有一个频率为500 Hz的方波,这基本上意味着您每秒将有500个波周期,这意味着您每20000个样本中将有500个波周期。这意味着每个波e循环需要40个样本(或点),因此,如果你有200个点,这意味着你的DFT中应该有5个方波周期。

如果你的采样频率是20000赫兹,而你有一个频率为500赫兹的方波,这基本上意味着你每秒有500个波周期,这意味着每20000个样本中有500个周期。这意味着每个波e循环需要40个样本(或点),因此如果你有200个点,这意味着你的DFT中应该有5个方波循环。

你可以通过在计算中包含单位来确保你的计算正确。因此周期有维度时间,赫兹的维度为1.0/次,样本是无维度的。 在编程上,你可以用它来做这件事。它会在编译时检查你的单元,如果你出错,它会给你一个错误

它还将阻止用户在代码中输入错误的单位。例如,输入20而不是20000作为频率(认为您是以kHz为单位测量的)

然后,您的界面将类似于

using namespace boost::units;
set_period(quantity<si::time> period);

您可以通过在计算中包含单位来确保正确进行计算。因此,周期具有维度时间,赫兹的维度为1.0/次,采样是无量纲的。 在编程上,你可以用它来做这件事。它会在编译时检查你的单元,如果你出错,它会给你一个错误

它还将阻止用户在代码中输入错误的单位。例如,输入20而不是20000作为频率(认为您是以kHz为单位测量的)

然后,您的界面将类似于

using namespace boost::units;
set_period(quantity<si::time> period);