在C ++中,要使用复数,我将struct-type“ creal”定义为
typedef struct {
double re;
double im; } creal;
现在,让“ length”为初始化为的结构数组“ complex_vector”的元素数
creal complex_vector[length];
并随后填充数据。
我想从“ complex_vector”中提取两个数组“ real_vector”和“ imag_vector”。到目前为止,我使用了for循环:
double real_vector[length];
double imag_vector[length];
for (int n = 0; n < length; n++)
{
real_vector[n] = complex_vector[n].re;
imag_vector[n] = complex_vector[n].im;
}
我想知道是否有办法避免for循环并直接提取结构数组“ complex_vector”的值以创建数组“ real_vector”和“ imag_vector”。
感谢您的帮助。
由于您的数据complex_vector
是交错的,因此无法避免循环
re0 im0 re1 im1 re2 im2 ... reN imN
并且您的目标代表是非交错的
re0 re1 re2 ... reN
im0 im1 im2 ... imN
因此必须以任何方式进行复制。如何使用for_each魔术以更紧凑的形式编写代码,但我认为这只会使代码更难以理解。
编辑:
然后使用一些更复杂的Matrix类(例如在OpenCV cv :: Mat_中),可以通过使用相同的数据缓冲区但修改步长来避免这种复制。但这当然是以较慢的元素访问为代价的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句