GitHub:https://github.com/programmerb/fourier-transform-terminal-/blob/master/classes/cooley-tukey.h
我已经尝试将参数更改为引用,并将私有成员添加到cooley-tukey类中,但我得到了同样的错误。
库利-图基类:
template<typename T>
class Cooley_tukey: protected Fourier<T>{
public:
Cooley_tukey();
Cooley_tukey(std::string file_name, double frequency, double,
frequency_step, std::string output_name);
//~Cooley_tukey();
void FFT(const std::vector<T> &index, const std::vector<T> &value);
std::vector<complex<T>> FFT_REC(std::vector<complex<T>> &temp, int
total_time); //recursion function for FFT
private:
int total_time;
部分错误:
classes\cooley-tukey.cpp:91:10: error: no matching function for call to
'Cooley_tukey<double>::FFT_REC(std::vector<std::complex<double>,
std::allocator<std::complex<double> > > [(total_time / 2)], int,
std::vector<std::complex<double>, std::allocator<std::complex<double> >
>&)'FFT_REC(odd, total_time/2, result);
FFT-递归函数(误差来源):
template<typename T>
std::vector<complex<T>> Cooley_tukey<T>::FFT_REC(std::vector<complex<T>>& temp, int total_time)
{
// Check if it is split up enough
if (total_time >= 2)
{
// Split even and odds up
std::vector<complex<T>> odd[total_time/2];
std::vector<complex<T>> even[total_time/2];
for (int i = 0; i < total_time / 2; i++)
{
even->at(i) = temp.at(i*2);
odd->at(i) = temp.at(i*2+1);
}
// Split up tasks through FFT recursion method
FFT_REC(even, total_time/2);
FFT_REC(odd, total_time/2);
// DFT portion of FFT - calculates after everything has been split up through FFT_REC
for (int frequency = 0; frequency < total_time / 2; frequency += this->frequency_step)
{
std::complex<T> t = exp(std::complex<T>(0, -2 * M_PI * frequency / total_time)) * odd->at(frequency);
//Result of Cooley-Tukey algorithm:
//*This gives us the frequency values at certain times
temp.at(frequency) = even->at(frequency) + t;
temp.at(total_time / 2 + frequency) = even->at(frequency) - t;
}
}
return temp;
}
template class Cooley_tukey<double>;
您将创建一个even
/odd
的向量数组,而您应该只有一个向量。错误表示没有一个方法接受向量数组。
我想你的意思是:
// Split even and odds up
std::vector<complex<T>> odd;
std::vector<complex<T>> even;
odd.reserve(total_time/2);
even.reserve(total_time/2);
for (int i = 0; i < total_time / 2; i++)
{
even.push_back(temp.at(i*2));
odd.push_back(temp.at(i*2+1));
}
您还尝试使用at()
将值设置为空向量,这会导致错误。向量可能没有分配任何存储空间,如果您试图用at()
对它们进行索引,当它超出界限时将会得到一个异常。
目标 在这一节中,我们将学习 使用OpenCV查找图像的傅立叶变换 利用Numpy中的FFT功能 傅立叶变换的一些应用 我们将学到以下函数:cv2.dft(),cv2.idft()等 理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,可以使用2D离散傅里叶变换(DFT)来查找频域。被称为快速傅立叶变换(FFT)的快速算法被用于DFT的计算。有关这些的细节可以在任何图像处理或信号处理的教科书中
我有一个8000 Hz采样率的单通道波。 我需要实时分析5赫兹到300赫兹之间的频率,重点是10到60赫兹的信号。 我最初的想法是将8000 Hz的样本放入缓冲区,收集大约32000个样本。然后,在其上运行32000窗口大小的傅立叶变换。 这里的理由是,对于低频信号,您需要更大的窗口大小(对吗?) 然而,如果我试图实时显示这个信号,那么AudioAnalyzerNode似乎不是一个好的选择。我知道
问题内容: 我正在尝试渲染文件。该文件存在于我的项目中,但是当我尝试渲染它时,我一直在获取文件。Flask为什么找不到我的模板? 问题答案: 必须在正确的位置创建模板文件。在你的python模块旁边的子目录中。 该错误表明目录中没有文件。确保在与模块相同的目录中创建了该目录,并且确实将文件放在该子目录中。如果你的应用是软件包,则应在软件包内创建模板文件夹。 另外,如果你将模板文件夹命名为templ
问题内容: 我正在尝试渲染文件。该文件存在于我的项目中,但是当我尝试渲染它时,我一直在获取文件。Flask为什么找不到我的模板? 问题答案: 你必须在正确的位置创建模板文件。在你的模块旁边的子目录中。 该错误表明目录中没有文件。确保在与python模块相同的目录中创建了该目录,并且确实将文件放在该子目录中。如果你的应用是软件包,则应在软件包内创建模板文件夹。 另外,如果你将模板文件夹命名为而不是其
目标 在本节中,我们将学习 使用OpenCV查找图像的傅立叶变换 利用Numpy中可用的FFT函数 傅立叶变换的某些应用程序 我们将看到以下函数:cv.dft(),cv.idft()等 理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。关于这些的详细信息可以在任何图像处理或信号处理教科书中找
template module在Ansible中非常常用,而它在使用的时候又没有显示的指定template文件中的值,所以有时候用户会对template文件中使用的变量感到困惑,所以在这里又重新强调下。 template变量的定义 在playbook中定义的变量,可以直接在template中使用,同时facts变量也可以直接在template中使用,当然也包含在inventory里面定义的host