扩展FFT和传输线

894(30天)
里克Rosson
里克Rosson 2011年9月13日
回答: 阿布塔希尔2021年8月13日
正确的方法是什么规模时的结果以快速傅里叶变换(FFT)和/或逆快速傅里叶变换(传输线)?
1评论
1月
1月 2019年1月21日
@ 庸张 请发布评论,要求澄清。标记是用来标记信息,因为它与使用条款冲突,如垃圾邮件或无礼。

登录置评。

接受的答案

里克Rosson
里克Rosson 2011年9月13日
比例有关系吗?
在大多数情况下,扩展并不是那么重要。整个光谱的形状比绝对规模更重要。
约定是什么?
但如果你真的担心,有几种不同的习惯,你可以选择(参见下面的定义):
  1. 规模的dtFFT,Fs的传输线
  2. 规模的1 / MFFT,的传输线
  3. 规模的1FFT,1的传输线
  4. 规模的1 /√(M)FFT,sqrt(米)传输线。
  5. 等等。
我通常使用选项# 1或选项# 2取决于我的心情和外面在下雨。
定义
我在这里假设我有一个离散时间信号 x 表示为一个 x N 矩阵, 的样品和数量吗 N 通道的数量。
[M, N] =大小(x);
此外,我假设抽样率 Fs 我已经定义了时间增量
dt = 1 / f;
和频率增量为:
dF = f / M;
这些习惯有什么共同点呢?
所有的这些习俗有一个共同点:两个比例因素的乘积总是 1 。请注意 传输线 在MATLAB函数包含一个比例因子 1 / M 作为计算的一部分,这样的整体 往返 扩展 1 / M (应该是)。
HTH。
瑞克
5个评论
Raunaq纳亚尔
Raunaq纳亚尔 2020年2月20日
什么情况我执行缩放因子(x)在时域进行FFT传输线然后缩减因子(1 / x)恢复信号。我需要照顾x的值呢?我问这个,因为在这种情况下,我们将扩展和收缩在时间域,所以我认为那对于这个具体案例Parseval或者说是定理应该适用无论x的值。
换句话说,我遵循以下的步骤序列
扩展x - - > FFT - - >传输线1 / x - - >扩展
我还想确认相同的扩展x在频域传输线然后其次是FFT和扩展1 / x在频域本身。
换句话说,我遵循以下的步骤序列
扩展x - - >传输线- - > FFT - - >扩展1 / x
x可以承担任何值恢复上述情况下的信号吗?

登录置评。

更多的答案(8)

检波器博士
检波器博士 2012年1月28日
你是对的比例是不重要的,如果只需要频谱的形状。然而,如果它是必要的,频谱的振幅是正确的,那么只有一个扩展——你的选项选择# 1。为了让Parseval定理,能量在时域必须等于在频域的能量。下面的例子演示了这一点:
> N = 8;
> dt = 0.1;
> df = 1 / (dt * N)
df =
1.25
> = randn (N, 1)
一个=
0.70154
-2.0518
-0.35385
-0.82359
-1.5771
0.50797
0.28198
0.03348
> b = fft (a) * dt
b =
-0.32813
0.10746 + 0.30519我
-0.080365 + 0.075374我
0.34826 + 0.17802我
0.13866
0.34826 - 0.17802我
-0.080365 - 0.075374我
0.10746 - 0.30519我
> energy_a =总和(. *连词(a) * dt)%在这里没有必要使用连词
energy_a =
0.83314
> energy_b =总和(b。*连词(b) * (df)%需要使用连接词
energy_b =
0.83314
11日评论
Raunaq纳亚尔
Raunaq纳亚尔 2020年2月20日
什么情况我执行缩放因子(x)在时域进行FFT传输线然后缩减因子(1 / x)恢复信号。我需要照顾x的值呢?我问这个,因为在这种情况下,我们将扩展和收缩在时间域,所以我认为那对于这个具体案例Parseval或者说是定理应该适用无论x的值。
换句话说,我遵循以下的步骤序列
扩展x - - > FFT - - >传输线1 / x - - >扩展
我还想确认相同的扩展x在频域传输线然后其次是FFT和扩展1 / x在频域本身。
换句话说,我遵循以下的步骤序列
扩展x - - >传输线- - > FFT - - >扩展1 / x
x可以承担任何值恢复上述情况下的信号吗?

登录置评。


杰罗姆
杰罗姆 2017年8月1日
你好
我见过很多科目与此相关的问题,所以不知道,把我的答案…我希望这可以帮助一些人。我可以看到主要有三组人,那些说不重要,那些除以信号点的数量,和那些除以采样频率。首先,对于某些应用程序,是的正确的振幅是很重要的。例如,地震的震级是计算从频谱的振幅。
然后我同意检波器博士,扩展频谱的正确方法是乘以dt。
人说fft的数量除以点经常带着罪恶的例子波振幅与振幅和希望看到2峰光谱/ 2。然而,这并不是一个连续的傅里叶变换罪波。傅里叶变换有两个狄拉克。每个峰的价值是无限的,在频域是一个集成/ 2。所以correctly-scaled离散频谱的价值我们应该在两个山峰
一个/ df / 2 = Npoints * / Fs / 2
Fs是采样频率,df频率向量的一步。
matlab fft输出振幅的图片* Npoints / 2所以扩展频谱的正确方法是fft乘以dt = 1 / Fs。除以Npoints凸显了但不正确的因素近似连续信号的频谱。
第二点是帕方程。我看到很多人说fft不能尊重这个关系或不适用在离散模式。首先,在离散模式,如果应该倾向于持续的价值。如果不能Npoints啤酒或更小。如果fft乘以dt,输入信号的能量等于频谱的能量。
我经常看到人们使用帕方程离散信号,这是不正确的
总和(abs (xi)。^ 2) =总和(abs (xi)。^ 2)X = fft (X)
正确的离散形式的帕关系是:
总和(abs (xi)。^ 2) * dt =总和(abs (xi)。^ 2) * df
满意的关系如果fft乘以dt和df是正确定义。
此外,有许多简单的典型的傅里叶变换,如指数衰减,三角形函数. .您可以建模时间信号和已知的连续变换和检查fft * dt是接近连续变换的正确方法。
1评论
亚历克斯·哈
亚历克斯·哈 2020年5月14日
编辑:亚历克斯·哈 2020年5月14日
在MATLAB中,基本上是正确的(如你的声明 正确的 离散形式的Parseval定理:
P_avg_TD =总和(abs (x) ^ 2) * dt;
P_avg_FD =总和(abs (X) ^ 2) * df;
提供了傅里叶变换结果是适当的 按比例缩小的 的一个因素 dt (你的三林集团内) 你可以看到:
在哪里 因此上述方程是:
取消条款左派和右派,“不正确”的表达你上面写道:
在哪里 只是定义为 fft 结果( )。作为参考, 数值的食谱 使用“不正确”的定义作为离散形式的Parseval定理,所以也许是混乱的不同定义和约定。
下面是一个示例代码显示正确的傅里叶变换缩放与比较 分析 高斯函数的傅里叶变换的结果。解析解的积分:
清晰;clc;
% %解析函数:高斯
σ= 1;%高斯的“宽度”
%定义时域函数f (t) | | ^ 2:
fun_t = @ (t) exp (- t ^ 2 /(2 *σ^ 2))。*连词(exp (- t ^ 2 /(2 *σ^ 2)));
%定义f (t)的傅里叶变换分析,例如| f (w) | ^ 2
fun_w = @ (w)(σ* sqrt(2 *π))。* exp(-(σ* w)。^ 2/2)。*连接词(
(σ*√2 * pi)。* exp(-(σ* w)。^ 2/2));
int_t =积分(fun_t、负无穷到正无穷);% P_avg f (t)
int_w =积分(fun_w、负无穷到正无穷)/(2 *π);% P_avg f (w) / 2π
% %数值例子:高斯
%定义时域数值信号
N = 1 e7;%。分域
域= (-5000 - 5000);%域评估f (t)
L =域(1、2)域(1,1);%的长度域(例如[5 e3, + 5 e3])
dt = L / N;%步长,dt
t = min(域):dt:马克斯dt(域);% t_n = t_min + n * dt (n = 0,……,n - 1)
%在时域中定义的函数
σ= 1;%高斯的“宽度”
ft_num = exp (- t ^ 2 /(2 *σ^ 2));% f (t),数值
fw_num = fft (ft_num);% f (w)、数值(们)
%考虑Parseval定理(数值食谱,任何dt和df因素)
E1_timedomain =总和(abs (ft_num ^ 2))
E1_freqdomain =总和(abs (fw_num ^ 2)) / N
%考虑Parseval定理(基于黎曼集成)
df = 1 / (N * dt);%计算频率阶跃
fx = fw_num。* dt;%规模fw_num根据dt(定义为外汇)
E2_timedomain = dt *总和(abs (ft_num ^ 2))
E2_freqdomain = df *总和(abs (fx ^ 2))% 2 *倍π是下降了
* %的差异在英国《金融时报》定义
我还应该指出,“不正确”的方法满足Parseval定理(例如P_avg_TD = P_avg_FD在第一行代码), 然而 ,你得到了 不正确的 平均功率的内容,如图所示的示例代码E1_timedomain和E2_timedomain。

登录置评。


Chani
Chani 2015年9月16日
编辑:Chani 2015年9月16日
大家好!
我试着上面提到的两个选项,即选择# 1 # 2用一个简单的正弦曲线和选项。结果两个选项迷惑我,我希望你可以帮助澄清一些事情。
我指的代码如下:
dt = 0.05;%时间步
t = (0: dt: 10);%的时间向量
s =罪(2 *π* t);%信号向量
N =长度(s);%数据点的数量
f = 1 / dt;%采样频率
df = f / N;%的频率增加
NFFT = N;% FFT长度作为FFT()的第二个参数
y_option1 = fft(年代,NFFT);%计算FFT使用采样间隔作为比例因子
y_option1 = y_option1 * dt;
y_shiftOption1 = fftshift (y_option1);
y_option2 = fft (s);%计算FFT使用信号长度作为比例因子
y_option2 = y_option2 / N;
y_shiftOption2 = fftshift (y_option2);
如果国防部(N, 2) = = 0% N是偶数
f = -f_s / 2: df: f /第二代;
其他的% N是奇数
f = [(1 * (df: df: f / 2)) (0: df: f / 2)];
结束
绘制正弦信号结果向量y_shiftOption1和y_shiftOption2导致如下图:
在我看来选择# 2的结果展示正确的振幅为0.5 v,自从时间信号的振幅1 v和这个值分为两个冲动消极和积极的频率刻度。
然而,关于帕定理,能量只是保存使用选项# 1:
总和(abs(年代)。^ 2)* dt = 5
总和(abs (y_shiftOption1) ^ 2)。* df = 5
总和(abs (y_shiftOption2) ^ 2)。* df = 0.0495
这是否意味着,如果我感兴趣的真实振幅的信号,我必须用选项# 2,如果我想保留信号的能量选择# 1应用?
提前感谢你的帮助!
Chani问好
7评论
肯尼
肯尼 2021年5月14日
你好马提亚。我想我找到了我的答案的比例——那时候我不明白它是什么。但它看起来像,如果扩展为一方或者双方都做了FFT和传输线,然后缩放因子应用FFT和传输线需要他们的产品变得等于1 / N。所以如果没有扩展适用于传输线,而FFT的1 / N,比例因子.....然后没关系。如果传输线和FFT都是用同样的比例因子1 /√(N),然后也没关系。有一些在这个链接.....讨论它 https://www.dsprelated.com/thread/4705/fft-ifft-scaling-revisited 由于马蒂亚斯。

登录置评。


米歇尔·马可尼
米歇尔·马可尼 2017年10月24日
怎么可能与matlab fft计算(没有特定的扩展!)和fft获得利用Xilinx SystemGenerator模块,有2000 x因素比例差异吗?例如Xilinx振幅低2000倍呢?
(我觉得这个话题是正确的关于幅度问题,抱歉gravedigging !)
1评论
Hossam Fadeel
Hossam Fadeel 2019年5月23日
我有一个情况的值从MATLAB FFT谱双Xilinx FPGA FFT的值相同的输入数据。
下面我用MATLAB代码,
clc;
清除所有;
关闭所有;
NFFT = 2048;% NFFT-point DFT
文件标识= fopen (‘Sine2048_test.txt’,‘r’);
A_Data = fscanf(文件标识,' % d '); % 2048个采样点
% %产生正弦与不同freucies frpom样品
mem_len =长度(A_Data)
Sine0 =[]; %基础频率
Sine1 =[]; %所需频率
指数= 1;
N = 32; %即倍频器
因为我= 1:mem_len
Sine0 = [Sine0 A_Data (i)];%得到罪恶值,在0.0 - -1.0范围
如果(指数> = mem_len) % | |(指数> mem_len)
指数= 1;
其他的
Sine1 = [Sine1 A_Data(指数)];
指数= + N指数;
结束
结束
图;
次要情节(2 2 1);
情节(Sine0)
标题(“原始正弦波1赫兹”)
次要情节(2,2,2);
情节(Sine1)
标题(与更高频率的正弦波(5赫兹)”)
% %
X_Sine0 = fftshift (fft (Sine0 NFFT));%计算DFT使用FFT
fVals = (-NFFT / 2: NFFT / 2 - 1) / NFFT;% DFT采样点
次要情节(2、2、3);
%的阴谋(fVals、abs (X_Sine0));
情节(fVals、abs (X_Sine0));
标题(“双面FFT - FFTShift”);
包含(归一化频率)
ylabel (DFT值);
X_Sine1 = fftshift (fft (Sine1 NFFT));%计算DFT使用FFT
fVals = (-NFFT / 2: NFFT / 2 - 1) / NFFT;% DFT采样点
次要情节(2、2、4);
情节(fVals、abs (X_Sine1));
标题(“双面FFT - FFTShift”);
包含(归一化频率)
ylabel (DFT值);
% %
图;
次要情节(2,1,1);
情节(Sine1)
标题(与更高频率的正弦波(5赫兹)”)
X_Sine1 = fftshift (fft (Sine1 NFFT));%计算DFT使用FFT
fVals = (-NFFT / 2: NFFT / 2 - 1) / NFFT;% DFT采样点
次要情节(2,1,2);
情节(fVals、abs (X_Sine1));
标题(“双面FFT - FFTShift”);
包含(归一化频率)
ylabel (DFT值);
% %
X_Sine1 = fft (Sine1 NFFT) / NFFT;%计算DFT使用FFT - FFT (/ NFFT)规模因素
% fVals = (-NFFT / 2: NFFT / 2 - 1) / (NFFT);% DFT采样点
FFT_imag =图像放大(X_Sine1)”;
FFT_real =现实(X_Sine1)”;
图;
情节(abs (FFT_imag));
图;
情节(abs (FFT_real));
图;
情节(abs (X_Sine1));
标题(“双面FFT - FFTShift”);
包含(归一化频率)
ylabel (DFT值);
= = = = = = = = = = =
MATLAB的输出——最后的图
振幅是8000
Capture.PNG
Xilinx FPGA的输出是:
振幅是4000
Capture2.PNG
任何解释这将不胜感激。

登录置评。


RSK
RSK 2018年4月19日
检波器博士
我想在这里和在其他地方提到过“振幅”这个词,你意味着产生的振幅变换后乘以dt,正确吗?(这不是正弦波的振幅,频率和变换)。然而,如果人们感兴趣的生成变换,正弦波的振幅在Chani选项# 2的例子应使用(虽然这并不是真正的变换的振幅)?如果我有一些机器床(为了)振动1赫兹与单位大小和我面对产生的变换”选项# 1”作为测量振动,我当然不应该得出这样的结论:这台机器床振动的振幅”选项# 1”所示。所以我猜除以N(选项2)告诉我机器床振动的大小。这是正确的理解吗?谢谢

布鲁诺陈德良
布鲁诺陈德良 2018年9月21日
编辑:布鲁诺陈德良 2018年9月21日
恕我直言,如果输入信号是x (t)是真实的,只有约一半的x (f) = fft (x) (f)相关(指标1:装天花板((N + 1) / 2))),另一半是共轭翻转的第一部分,所以帕是匹配的集成 X (f) ^ 2 [0,1 / (2 * dt)](奈奎斯特频率)和一个必须乘以一个额外的因素关于sqrt(2)的顶部的dt fft (x (t_i))的帕平等到奈奎斯特频率(而不是除此之外)。
一些细微的考虑:如果N是偶数,频率装天花板((N - 1) / 2) * df数只有一次所以不应该乘以sqrt (2)。相同的静态词(f = 0)的情况。
√6倍(2):它可以使桥梁抵抗或下降。

弗朗茨Bouchereau
弗朗茨Bouchereau 2021年7月29日
这是一个受欢迎的MATLAB医生页面解释FFT缩放和FFT和真正的功率谱之间的关系: 使用FFT功率谱密度估计

阿布塔希尔
阿布塔希尔 2021年8月13日
执行传输线增加两个FFT序列从x和获得的结果

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!