草庐IT

fft_point

全部标签

c++ - std::chrono::time_point 设置为现在

我对这些库还是很陌生,我可以在std::chrono上找到的文档对我不起作用。我正在尝试实现一个包含时间戳的对象容器。这些对象都将按从最近到最不最近的顺序存储,我决定尝试使用std::chrono::time_point来表示每个时间戳。处理数据的线程将定期唤醒,处理数据,查看何时需要再次唤醒,然后在这段时间内休眠。staticstd::chrono::time_point_nextWakeupTime;我的印象是上面的声明使用了一个毫秒级精度的时钟。下一步是将_nextWakeupTime设置为现在的表示;_nextWakeupTime=time_point_cast(steady_

c++ - "Creation point"自动变量

voidfoo(){//somecodeMyClassm();//somemorecode}C++标准是否确保MyClass类的构造函数将在//somecode运行后被调用,还是未指定行为? 最佳答案 这个问题的技术答案是编译器将保证构造函数根本不运行,因为行MyClassm();不是变量声明。相反,它是一个名为m的函数的原型(prototype),该函数不接受任何参数并返回一个MyClass。要使它成为一个对象,您需要删除括号:MyClassm;因为这是一个困惑的根源,在C++11中有一种新语法可用于初始化自动对象。不要使用圆括号

c++ - Kiss FFT 似乎将数据乘以它转换的点数

我对傅立叶变换的有限理解是,您应该能够在不更改原始数据的情况下在时域和频域之间切换。所以,这里是我(认为我)正在做的事情的总结:使用kiss_fft_next_fast_size(994)确定我应该使用1000。使用kiss_fft_alloc(...)创建一个kiss_fft_cfg,nfft=1000。通过将额外的点填充为零,将我的输入数据从994扩展到1000。将kiss_fft_cfg连同我的输入和输出数组传递给kiss_fft(...)。使用kiss_fft_alloc(...)创建一个inversekiss_fft_cfgnfft=1000。将逆kiss_fft_cfg传递

c++ - 与 FFT 的卷积,这是如何工作的?

我知道在时域中,两个矩阵之间的卷积是一项非常昂贵的操作,您可以通过在复平面中转换它们并使用乘法(然后返回时域)在频域中执行它无论如何,我不明白这是如何在CUDASDK中执行的,其中数据和内核被填充并放入两个缓冲区(m_PaddedKernel和m_PaddedData),这应该是为了加速Cooley-Tuckey方法,然后是函数cufftExecC2C被调用首先将内核(为什么是C2C?复杂到复杂,为什么不是实到复杂?)转换为复平面,然后将整个数据转换为同一平面然后定义的内核spProcess2D_kernel开始运行,看起来像是规范化并在频域中执行数据和内核之间的乘法(如何进行两个函数

c++ - 使用 FFT 的移频器

我一直在使用RosettaCode提供的原始FFT算法开发移频器。我知道要对样本信号进行频移,可以对原始音频应用FFT,将每个所得正弦波的频率乘以频移因子(用户定义),然后将正弦波加回一起。当我运行我的算法时,输出质量极低,就好像算法中没有收集到足够多的正弦波,无法在一开始就接近正确地再现信号。该算法在头文件中的一个类中实现,并在其他地方(正确地)调用。#include#includetypedefstd::complexComplex;typedefstd::valarrayCArray;classFrequencyShifter{floatsampleRate;public:Fre

c++ - cpp 中基于 FFT 的图像配准(可选地使用 OpenCV)?

我正在尝试对齐从手持相机拍摄的两张图像。起初,我尝试使用基于SIFT/SURF特征点的OpenCVwarpPerspective方法。问题是当图像质量很高(3000x4000)时,特征提取和匹配过程可能会非常慢。我试图在找到特征点之前缩小图像,结果不如以前。(从findHomography生成的Mat不应该受到缩放的影响向下图像,对吗?)有时,由于缺乏良好的特征点匹配,结果很奇怪。搜索了这个题目,好像解决傅里叶域的问题会加快注册过程。我找到了thisquestion这让我找到了codehere.唯一的问题是代码是用python和numpy编写的(甚至没有使用OpenCV),这使得使用O

c++ - "2D fft"是否与两个 1D fft 相同?

我有一个cuda代码,我已经在其中实现了几个C2C2DFFT。它们都使用相同的计划,但由于某种原因,2DFFT的时间很大,而且似乎差异很大。相同数据大小的FFT似乎需要0.4秒到1.8秒这适用于1920x1080FFT。那些时间看起来合理吗?无论如何-我对CUDA一维批处理FFT的速度非常快有很好的体验。对行进行1DFFT,然后再次对矩阵的列进行1DFFT以给出与此2DFFT相同的结果是否相同?我之前曾在一维FFT的较大数据集中经历过FFT在百分之几秒内发生的情况,因此我希望能够修复其中的一些结果。谢谢 最佳答案 1Kx1K图像的2

c++ - Rust 中的 "sequence point"/"sequenced-before"规则是什么?

Rust中的规则是什么,类似于这里描述的规则http://en.cppreference.com/w/cpp/language/eval_order对于C++?目前我凭经验发现,1)函数的参数按直接顺序求值2)所有有副作用的内置操作(=、+=、-=等)返回单位,因此很难(但可能)组成表达式,这将在C++中显示UB。一个例子:letmuta=1i;letb=2i;letc=3i;letd=(a=b)==(a=c);//Whatisa?(aisactually3)3)似乎函数调用的顺序与C++中的一样4)似乎内置操作的顺序就像它们是函数(方法)调用一样,即求值顺序与运算符优先级相关我的结论

c++ - std::chrono::time_point 无效值

boost/std::chrono::time_pointmy_time_point(/*invalidvalue*/);我需要存储一个无效/无意义/标记值。我怎么可能那样做? 最佳答案 您可以使用boost::optional(或std::optional,如果您支持C++17)表示chrono::time_point的无效状态:#include#includeintmain(){usingmy_clock=std::chrono::system_clock;usingmy_time_point=std::chrono::time

iphone - coreplot :Converted coordinates, 有问题。 [plotSpace plotPoint:plotPoint forPlotAreaViewPoint:point];

我想将接触到的点转换为CPTXYPlotSpace点。但我发现那里有真实坐标的偏移量。我发现,它从边界计算了x轴的一部分。我想将点映射到x&y轴的值。我的英语很差....我想知道哪里错了?请告诉我。这是代码。-(BOOL)plotSpace:(CPTPlotSpace*)spaceshouldHandlePointingDeviceDownEvent:(id)eventatPoint:(CGPoint)point{NSDecimalplotPoint[2];CPTXYPlotSpace*plotSpace=(CPTXYPlotSpace*)graph.defaultPlotSpace;