0

下面的代码来自 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
4

1 回答 1

1

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

 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 秒......

于 2012-09-30T03:32:42.190 回答