使用 MATLAB 对任意图进行傅里叶变换和 FFT

Posted

技术标签:

【中文标题】使用 MATLAB 对任意图进行傅里叶变换和 FFT【英文标题】:Fourier transform and FFT for an arbitrary plot using MATLAB 【发布时间】:2015-06-23 17:50:49 【问题描述】:

我有一个简单的问题,但由于我没有使用 MATLAB Fourier Transform 工具,我需要一些帮助。我有一个从 n excel 文件中获得的图。该图在时域中。绘图的时间范围是 0 到 50 ps。我每 0.5 fs 就有一次绘图 y 分量的数据。基本上,该图包含每 0.5fs 打印的 100000 个数据。现在我想得到这个图的傅里叶变换。我该怎么办?以下是我的 excel 文件的简单格式,其中包含我需要绘制时域图的数据。

0       116.0080214
0.0005  116.051128
0.001   116.0939229
0.0015  116.1362197
0.002   116.1776665
0.0025  116.2178118
0.003   116.256182
.
.
.
.
50.0    123.000

第一列是以 ps 为单位的时间。非常感谢您的帮助。最好的,HRJ

【问题讨论】:

您可以使用 fft() 函数。此外,如果你有它,还有一个带有漂亮 psd 功能的数字信号处理工具箱 【参考方案1】:

我已经为解决方案改编了this page。

    Fs = 100000/50;               % Sampling frequency (in 1/ps)
    T = 1/Fs;                     % Sample time (in ps)
    L = 100000;                   % Length of signal
    t = (0:L-1)*T;                % Time vector; your first column should replace this

    % Sum of a 50 1/ps sinusoid and a 120 1/ps sinusoid
    % Your second column would replace y 
    x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 
    y = x + 2*randn(size(t));     % Sinusoids plus noise

    NFFT = 2^nextpow2(L);         % Next power of 2 from length of y
    Y = fft(y,NFFT)/L;
    f = Fs/2*linspace(0,1,NFFT/2+1);

    close all
    subplot(2,1,1)
    % Plot your original signal
    plot(Fs*t(1:100),y(1:100))
    title('Signal Corrupted with Noise')
    xlabel('time (fs)')

    % Plot single-sided amplitude spectrum.
    subplot(2,1,2)
    plot(f,2*abs(Y(1:NFFT/2+1))) 
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (1/ps)')
    ylabel('|Y(f)|')

【讨论】:

我之前访问过那个页面!您将如何处理以下部分?你从哪里得到这些罪的功能?只是复制粘贴? 50 1/ps sinusoid 和 120 1/ps sinusoid 的总和 % 您的第二列将替换 y x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(大小(t)); % 正弦曲线加噪声 @H.RJ sin 函数只是展示fft() 工作原理的示例。不要使用正弦,只需将y 定义为您附加的数据中的第二列,并将t 定义为您附加的数据中的第一列。 感谢您的关注!但是 x 呢? 打扰了,我是这方面的初学者! @H.RJ 此示例中的x 是纯正弦波的叠加。 x 信号被标记为% Sinusoids plus noise 的行中的噪声破坏。幅度谱应在构成纯正弦波x 的频率处显示较大的功率峰值,而在其他频率处显示较小的峰值。就是这种情况,您可以在下图中看到。

以上是关于使用 MATLAB 对任意图进行傅里叶变换和 FFT的主要内容,如果未能解决你的问题,请参考以下文章

用matlab进行傅里叶变换。傅里叶变换得到的相位谱、幅值谱有啥用?怎么分析?

用 Matlab 进行傅里叶变换

2021-05-20 Matlab实现傅里叶变换

2021-05-20 Matlab实现傅里叶变换

2021-05-10 Matlab短时傅里叶变换和小波变换的时频分析

分别使用specgram函数和tftb工具箱对信号进行STFT短时傅里叶时频分析matlab仿真