【信号处理】基于扩展傅里叶的信号分析(Matlab代码实现)

 ‍个人主页:研学社的博客 

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 参考文献

4 Matlab代码及详细文章讲解


1 概述

摘要:是为了强调所提出的光谱分析方法与离散傅里叶的连接变换 (DFT),研究最广泛和最常用的方法 信号处理的历史。结果表明,在典型应用中 在这种情况下,统一数据读数转换为相同数量的 均匀间隔的频率,经典DFT的结果和提出 方法重合。当 选择 DFT 以大于数据的长度。DFT解决了 未知数据问题,通过用零填充读数,直到长度为 DFT,而拟议的扩展DFT(EDFT)在 不同的方式,它使用傅里叶积分变换作为目标并优化 扩展频率范围内的变换基,而不放置这样的 时域限制。因此,逆DFT(IDFT)适用 EDFT的结果不仅返回已知读数,还返回 外推数据,其中经典DFT只能返回零,以及 在数据所在的频率下实现更高的分辨率 已成功扩展。已经证明EDFT能够处理数据 数据内部有缺失读数或间隙,甚至数据分布不均匀。 因此,EDFT显著扩展了基于DFT的方法的可用性,其中 以前,这些方法被认为不适用。电子数据交换和金融交易 以迭代方式找到解决方案,并需要重复计算以 获得自适应基,这使得它的数值复杂度要高得多 与DFT相比。这一劣势在1990年代是一个严重的问题,当时 已经提出了方法。幸运的是,从那时起,计算机的力量 增加如此之多,以至于如今EDFT应用程序可以被认为是真正的 。

详细文章见第4部分。

2 运行结果

【信号处理】基于扩展傅里叶的信号分析(Matlab代码实现)_第1张图片

 部分代码:

% No input
if nargin==0
    error('Not enough input arguments') 
end
if sum(any(isinf(x)))
    error('Inf is not allowed in input')
end
[m, n] = size(x);
% Basic algorithm
if (nargin == 1) && (m > 1) && (n > 1)
%   f = fft(fft(x).').';
    f = edft(edft(x).').';
    return;
end
% Padding for vector input
if nargin < 3, ncols = n; end
if nargin < 2, mrows = m; end
mpad = mrows; npad = ncols;
if m == 1 && mpad > m, x(2, 1) = 0; m = 2; end
if n == 1 && npad > n, x(1, 2) = 0; n = 2; end
if m == 1, mpad = npad; npad = 1; end   % For row vector
% Transform
%f = fft(x, mpad);
%if m > 1 & n > 1, f = fft(f.', npad).'; end
f = edft(x, mpad);
if m > 1 && n > 1, f = edft(f.', npad).'; end

3 参考文献

部分理论来源于网络,如有侵权请联系删除。

【信号处理】基于扩展傅里叶的信号分析(Matlab代码实现)_第2张图片

4 Matlab代码及详细文章讲解

你可能感兴趣的:(信号处理/OFDM,matlab,开发语言)