Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 傅里叶变换缩放幅度_Image Processing_Signal Processing_Fft - Fatal编程技术网

Image processing 傅里叶变换缩放幅度

Image processing 傅里叶变换缩放幅度,image-processing,signal-processing,fft,Image Processing,Signal Processing,Fft,我有一组信号S1,S2,…,SN,我正在数值计算傅里叶变换F1,F2,,,FN。其中Si和FI是C++向量(我的计算是C++)。p> 我的计算目标如下: 计算乘积:F=F1*F2*…*FN 逆傅里叶变换F得到S 我在数值上观察到的是,当我试图计算乘积时,或者我遇到了数字变得太小的情况。或者数字变得太大 我想用a1来缩放F1,这样可以避免溢出或下溢 随着规模的扩大,我上面的第一步将成为 F' = (F1/a1)*(F2/a2)*...*(FN/aN) = F'1*F'2*...*F'N 当我进行

我有一组信号S1,S2,…,SN,我正在数值计算傅里叶变换F1,F2,,,FN。其中Si和FI是C++向量(我的计算是C++)。p> 我的计算目标如下:

  • 计算乘积:F=F1*F2*…*FN

  • 逆傅里叶变换F得到S

  • 我在数值上观察到的是,当我试图计算乘积时,或者我遇到了数字变得太小的情况。或者数字变得太大

    我想用a1来缩放F1,这样可以避免溢出或下溢

    随着规模的扩大,我上面的第一步将成为

    F' = (F1/a1)*(F2/a2)*...*(FN/aN) = F'1*F'2*...*F'N
    
    当我进行逆变换时,我的最终S'将与S相差一个比例因子。S的结构形式不会改变。我的意思是,只有S的标准化是不同的

    我的问题是:

  • 我的理由是否正确

  • 如果我的理论是正确的,那么给出一个C++向量“FI”,我如何选择一个好的比例“ai”来放大或缩小FI的


    非常感谢。

    您可以在新域中更改Fi向量的范围,例如[a,b]。所以从你的向量Fi来看,最小值变成a,最大值变成b。可以使用以下等式缩放向量:

    Fnew[i]=(b-a)/(max-min)*(F[i]-min)+a

    式中:min=F的最小值 max=F的最大值


    现在唯一的问题是选择a和b。我会选择[1,2],因为值很小(因此不容易溢出),但不小于0。

    您可以在新域中更改Fi向量的范围,比如[a,b]。所以从你的向量Fi来看,最小值变成a,最大值变成b。可以使用以下等式缩放向量:

    Fnew[i]=(b-a)/(max-min)*(F[i]-min)+a

    式中:min=F的最小值 max=F的最大值


    现在唯一的问题是选择a和b。我会选择[1,2],因为这些值很小(因此不容易溢出),但不小于0。

    您的问题可能更适合。您使用的数据类型是什么(浮点型、双精度型、长双精度型、整数型)?你能至少给我们看一点代码吗?你在做复数乘法吗?是的,我正在使用的数字公式fft例程将数字的实部和复部并排放置,即N个复数放在一个大小为2N的向量中。在我从fft例程获得输出后,我会执行复杂的乘法。你的问题可能更适合。你使用的是什么数据类型(浮点?双精度?长双精度?整数?)?你能至少给我们看一点代码吗?你在做复数乘法吗?是的,我正在使用的数字公式fft例程将数字的实部和复部并排放置,即N个复数放在一个大小为2N的向量中。在我从fft例程获得输出后,我会执行复数乘法。很可能我无法执行转换,即在重新缩放时无法向函数添加任何内容。如果我这样做了,我就是在信号中添加了一个不存在的DC分量。然后你可以在字符串上实现乘法,这样你就可以避免溢出或下溢,这样你就不会修改你的数据了。您可以将所有的数字视为字符串并重写“*”运算符字符串*(字符串、字符串),这样就不会出现数据表示的问题。很可能我不能执行翻译,也就是说,当我重新缩放时,不能向函数添加任何内容。如果我这样做了,我就是在信号中添加了一个不存在的DC分量。然后你可以在字符串上实现乘法,这样你就可以避免溢出或下溢,这样你就不会修改你的数据了。您可以将所有的数字视为字符串并重写“*”运算符字符串*(字符串、字符串),这样就不会出现数据表示问题。