Image processing 傅里叶变换缩放幅度
我有一组信号S1,S2,…,SN,我正在数值计算傅里叶变换F1,F2,,,FN。其中Si和FI是C++向量(我的计算是C++)。p> 我的计算目标如下: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 当我进行
F' = (F1/a1)*(F2/a2)*...*(FN/aN) = F'1*F'2*...*F'N
当我进行逆变换时,我的最终S'将与S相差一个比例因子。S的结构形式不会改变。我的意思是,只有S的标准化是不同的
我的问题是:
非常感谢。您可以在新域中更改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分量。然后你可以在字符串上实现乘法,这样你就可以避免溢出或下溢,这样你就不会修改你的数据了。您可以将所有的数字视为字符串并重写“*”运算符字符串*(字符串、字符串),这样就不会出现数据表示问题。