用MATLAB实现任意图形的傅里叶变换和FFT
我有一个简单的问题,但由于我没有使用MATLAB傅里叶变换工具,我需要一些帮助。我有一个从n excel文件获得的绘图。该图是在时域中绘制的。绘图的时间范围是0到50 ps。我每0.5 fs就有一次绘图y分量的数据。基本上,绘图包含100000个数据,每0.5fs打印一次。现在我想得到这个图的傅里叶变换。我该怎么办?以下是我的excel文件的简单格式,其中包括绘制时域图所需的数据用MATLAB实现任意图形的傅里叶变换和FFT,matlab,fft,Matlab,Fft,我有一个简单的问题,但由于我没有使用MATLAB傅里叶变换工具,我需要一些帮助。我有一个从n excel文件获得的绘图。该图是在时域中绘制的。绘图的时间范围是0到50 ps。我每0.5 fs就有一次绘图y分量的数据。基本上,绘图包含100000个数据,每0.5fs打印一次。现在我想得到这个图的傅里叶变换。我该怎么办?以下是我的excel文件的简单格式,其中包括绘制时域图所需的数据 0 116.0080214 0.0005 116.051128 0.001 116.0939229
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中的时间。非常感谢您的帮助。最棒的是,我已经适应了这个解决方案
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)|')
您可以使用fft()函数。此外,如果你有它有一个数字信号处理工具箱,它附带了一个很好的psd功能,我之前访问过这个页面!你将如何处理下面的部分?你从哪里得到这些罪恶函数的??只是复制粘贴?50 1/ps正弦波和120 1/ps正弦波的总和%第二列将替换y x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);y=x+2*randn(尺寸(t));%正弦波加noise@H.RJsin函数只是演示
fft()
如何工作的示例。不要使用SINE,只需将y
定义为所附数据的第二列,将t
定义为所附数据的第一列即可。非常感谢您的关注!但是x呢?抱歉打扰了,我是这方面的初学者@H.RJ本例中的x
是纯正弦波的叠加。x
信号被标记为%正弦波加噪声的行中的噪声损坏。振幅谱应在构成纯正弦波的频率处显示较大的功率峰值x
,在其他频率处显示较小的功率峰值。如下图所示,情况就是这样。