Time vector to generate a sinusoid signal with 0.5 seconds duration , Fs =200

12 views (last 30 days)
Edited: Cris LaPierre on 24 Oct 2020
Hi , please I'm confused with the following time vectors t1 and t2 to generate 0.5 second duration sinusoid signal :
Vector t1 has equally spaced samples at Ts intervals , but the signal x1 has duration equal to ( duration+Ts ) seconds , I checked x1 length .
Vector t2 has equally spaced samples not Ts intervals , signal x2 dutaion = ( duration ) secons excatly , which time vector is correct ?
%% Generates a sine wave of 0.5 second duration
F0=10; % Sinusoid frequency in Hz
Fs=200; % sampling frequency samples / sec
duration=0.5; % signal duration is seconds
Ts=1/Fs; % sampling Interval
t1=0:Ts:duration; % time vector with equally spaced samples at Ts intervals
t2=linspace(0,duration,duration*Fs); % time vector with samples not at Ts intervals
x1=sin(2*pi*F0*t1); % signal duration = ( duration+Ts ) seconds , length = 101 points
x2=sin(2*pi*F0*t2); % signal duration = ( duration ) secons , length = 100 points

Mathieu NOE on 23 Oct 2020
Hi
I don't agree with your statement
Because if I use the 1st line I get signal duration = 0.501 seconds not 0.5 Seconds .
max value of t1 = duration so it cannot reach 0.501 s if you have declared duration = 0.5 s
(and that's what I get too)
now , maybe you're confused by the fact that t1 has 101 values - simply when you define a time vector going from 0 to n*Ts you will have n+1 samples.
t1 has 101 points , this means signal duration = ( 101/Fs ) = 0.505 seconds not 0.5 seconds .
I need the signal duration to be 0.5 seconds with sampling instants at 1/Fs (0.005) .
So I think using the following will be correct , right ?
t2=linspace(0,0.5,duration*Fs+1);
Mathieu NOE on 23 Oct 2020
yes , if you prefer take the second option
t2=linspace(0,0.5,duration*Fs+1);
but the first method works also. example you just take 2 samples with dt = 0.005
first sample correspond to t = 0
second sample correspond to t = 1 * dt = 0.005
you have 2 samples for a signal duration = 0.005 (= 1 x dt)
so this is what I tried to explain

Cris LaPierre on 23 Oct 2020
Edited: Cris LaPierre on 24 Oct 2020
When using linspace, don't forget to account for 0. For example, how many numbers are there between 0 and 10? 11.
You should add 1 to your calculated number of points. This way, the colon operator and linspace give the same result, and both t1 and t2 are vectors with 101 points.
t1 = 0:1/200:0.5;
mean(diff(t1))
ans = 0.0050
t2 = linspace(0,0.5,0.5*200+1);
mean(diff(t2))
ans = 0.0050

1 Comment

Thanks a lot , now I understand it , actually I was confused because the following example from matlab to generate a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds :
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
The example says signal duration 1.5 seconds , but I see signal duration it is 1.499 seconds .