巨大的比例因子振幅在NUFFT vs FFT

112(30天)
托马索Pettinari
托马索Pettinari 2023年5月14日19点
评论道: 托马索Pettinari2023年5月26日在阿联酋
你好,我有几个问题关于FFT和NUFFT。
  1. 我试着计算的光谱分析数据(超过30000个样本向量,由于采样频率为240赫兹),利用FFT和NUFFT算法,在相同的采样数据的向量。有相同的形状和的结果相同,除了高的比例因子(10 ^ 4)。此外,使用只在非均匀矢量只有NUFFT数据超过某个阈值(0.95,就我而言)之前相同的数组,比例因子明显不同,但仍然存在。有一种快速的方法来找到并可能正确的比例因子呢?
  2. NUFFT的光谱分析,有一个更高的谐波频率较低。这是由于这一事实,与阈值剥离,我已经打扫了信号,所以我可以看到更好的低频成分谱图?
谢谢提前
2的评论
托马索Pettinari
托马索Pettinari 2023年5月15日在41
编辑:托马索Pettinari 2023年5月15日在59
嗨,保罗。
我发送你一个简化版本的代码在下面的空间,三个变量在运行代码之前在工作区中打开。
[m, n] =大小(raw_trajectory);
fs = 240;
% %光谱analisys nufft
frequencyPSD = 0 (n / 2、3);
i = 1:1
%信号的振幅谱
dft_trajectory = abs (nufft (raw_trajectory_ot (~ isnan (raw_trajectory_ot(:,我)),i), clean_frames(我~ isnan (raw_trajectory_ot(:,我)))));
谱= dft_trajectory(1:圆形(m / 2) + 1);
光谱(2:end-1) = 2 *光谱(2:end-1);
f = 0: f / m: fs / 2;
次要情节(2,1,1)
情节(f(2:结束),光谱(2:结束);
标题(“与nufft振幅谱”);包含(的频率(赫兹));ylabel (“模del Segnale”);轴;网格;
%的信号的功率谱
psd = dft_trajectory(1:圆形(m / 2) + 1);%振幅谱
psd = 1 / (fs *米)* psd。^ 2;% abs的振幅谱
psd (2: end-1) = 2 * psd (2: end-1);%乘以2积极的功率谱的部分
次要情节(2,1,2)
情节(f(2:结束),psd(2:结束);%的功率谱
标题(的功率谱与nufft);包含(的频率(赫兹));ylabel (“权力(W)”);轴;网格;
持有
结束
% % Analisi spettrale con fft
frequencyPSD = 0 (n / 2、3);
i = 1:1
%振幅谱
dft_trajectory = abs (fft (raw_trajectory(:,我))/ m);
谱(:,i) = dft_trajectory(1:圆形(m / 2) + 1);
谱(2:end-1, i) = 2 *光谱(2:end-1,我);
f = 0: f / m: fs / 2;
次要情节(211)
情节(f(2:结束),光谱(2:最后,我));
标题(“与fft Ampitude谱”);包含(的频率(赫兹));ylabel (“模del Segnale”);轴;网格;
结束
i = 1:1
%功率谱
dft_trajectory = abs (fft (raw_trajectory(:,我))/ m);
psd (:, i) = dft_trajectory(1:圆形(m / 2) + 1);
psd (:, i) = 1 / (fs *米)* psd(:,我)。^ 2;
psd (2: end-1, i) = 2 * psd (2: end-1,我);
次要情节(212)
情节(f(2:结束),psd(2:最后,我));
标题(与fft功率谱的);包含(的频率(赫兹));ylabel (“权力(W)”);轴;网格;
结束
% %与nufft光谱分析原始轨迹
frequencyPSD = 0 (n / 2、3);
i = 1:1
%振幅谱
dft_trajectory = abs (nufft (raw_trajectory(:,我)));
谱= dft_trajectory(1:圆形(m / 2) + 1);
光谱(2:end-1) = 2 *光谱(2:end-1);
f = 0: f / m: fs / 2;
次要情节(2,1,1)
情节(f(2:结束),光谱(2:结束);
标题(“原始轨迹与nufft振幅谱”);包含(的频率(赫兹));ylabel (“模del Segnale”);轴;网格;
%功率谱
psd = dft_trajectory(1:圆形(m / 2) + 1);
psd = 1 / (fs *米)* psd。^ 2;
psd (2: end-1) = 2 * psd (2: end-1);
次要情节(2,1,2)
情节(f(2:结束),psd(2:结束);
标题(的功率谱与原始轨迹nufft);包含(的频率(赫兹));ylabel (“权力(W)”);轴;网格;
持有
结束
FFT和NUFFT称为线7日31日42,56。
谢谢你的帮助!

登录置评。

答案(1)

保罗
保罗 2023年5月15日14:54
在fft部分,变量dft_trajectory被定义为
% dft_trajectory = abs (fft (raw_trajectory(:,我))/ m);
但nufft部分不包括除m dft_trajectory的计算。单独占一个很大的区别。
同时,raw_trajectory数据有一些异常值和数据下降,应清理干净
负载raw_trajectory
负载clean_frames
负载raw_trajectory_ot
[m, n] =大小(raw_trajectory);
fs = 240;
tvec = (0: m - 1) / fs;
%我玩……这里处理离群值,但数据在下降
%在t = 1秒持续很长时间。
% raw_trajectory (: 1) = filloutliers (raw_trajectory(: 1),“线性”,“movmedian”, 100年);
情节(次要情节(211),clean_frames (1:), raw_trajectory_ot (: 1))
情节(次要情节(212)、tvec raw_trajectory (: 1))
5个评论
托马索Pettinari
托马索Pettinari 2023年5月26日在阿联酋
谢谢你的答案,你的时间,保罗。

登录置评。

标签

社区寻宝

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

开始狩猎!