【问题标题】:Matlab fft functionMatlab fft函数
【发布时间】:2012-09-30 02:04:11
【问题描述】:

以下代码来自 Matlab 2011a 关于 fft 函数的帮助。 我认为这里有一个问题:为什么他们将 t(1:50) 乘以 Fs,然后说是毫秒时间?当然,在这个非常特殊的情况下它恰好是正确的,但是将 Fs 的值更改为 2000,它将不再起作用,显然是因为这个因素 2。?相当误导,不是吗?我错过了什么?

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

这样更清楚:

fs = 2000;          % Sampling frequency
T = 1 / fs;         % Sample time
L = 1000;           % Length of signal
t2 = (0:L-1)*T;     % Time vector
f = 50;             % signal frequency
s2 = sin(2*pi*f*t2);
figure, plot(fs*t2(1:50),s2(1:50)); % NOT good
figure, plot(t2(1:50),s2(1:50));    % good

【问题讨论】:

    标签: matlab fft sampling


    【解决方案1】:

    你不会错过任何东西。这是不将单位作为每行的 cmets 的典型不良做法。例如,

     Fs=1000;          % in [Hz]
     T=1/Fs;           % [sec]
     L = 1000;         % Length of signal
     t = (0:L-1)*T;    % Time vector
    

    那么,时间向量的单位为 1/1000 秒,或毫秒……(每个元素为 1 毫秒)。 在另一种情况下,Fs=2000 %[Hz],这使得时间向量的单位为 1/2000 秒...

    【讨论】:

    • 所以为了安全起见,我会一直做 plot(t2(1:50),s2(1:50));谢谢
    • @CTZStef 为了安全起见,请了解您正在绘制的矢量的单位...
    • 好吧,我实际上是这样结束的,尽管 matlab 的帮助在这一点上并不清楚,但让我感到惊讶。当我设计代码时,我让它与用户可以选择的每个参数一起工作... 10, 1000, 2000...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多