0
$\begingroup$

I have a sinusoidal signal that is sampled at $f_s=10$ Hz. I am asked to find the absolute value of the DFT for different data lengths (1 sec., 2 sec. etc.)

I do not understand where will I use the information about the data lengths.

Does the question want me to change the time vector for each attempt? as such:

** original time vector **

f=10;         % sampling freq
t=0:1/f:5;

rendering

x = cos(2*pi*3*t)

** time vector for each attempt **

t1=0:1/f:f*1; % data length = 1 sec
t2=0:1/f:f*2; % data length = 2 sec

thus rendering

x1 = cos(2*pi*3*t1);
x2 = cos(2*pi*3*t2);

and the rest would be how we usually get the FFT.

Did I understand the request correctly or not?

----Edit ------

The question is specifically for matlab simulation: enter image description here

$\endgroup$
  • $\begingroup$ In t1=0:1/f:f*1, you are mixing times (1/f) and frequencies (f*1). Use times for everything: t1 = 0:1/f:1 for samples going from 0 to 1 second. $\endgroup$ – Juancho Feb 6 '17 at 16:31
0
$\begingroup$

The information about the frequency of the sine seems to be missing. This could be an hint for you to compute the DFT exactly (not with Matlab simulation), for a given frequency $f$ and a number $s$ of seconds. Since the sampling frequency $f_0$ gives a integer multiple of samples inside one second, you should be able to find manageable formulas.

As commented by @Juancho, there is a lack of homogeneity in your time base: a frequency times a duration in seconds is not homogeneous to a time (it is unitless). A flexible solution is:

fs=10; % sampling freq
lFreq = [3 3.5 4]; % list of frequencies
lDuration = [1 2 4 10]'; % list of durations

for iDuration = 1:length(lDuration)
    timeBase = [0:1/fs:lDuration(iDuration)]';
    dataCosine = cos(timeBase*lFreq*2*pi); % Three cosines
    data = sum(dataCosine,2); % sum the three cosine components
    figure(iDuration)
    plot(timeBase,data,'x-');
    ylabel('Amplitude (a.u.)')
    xlabel('Time (seconds)')
    title(['Duration: ',num2str(lDuration(iDuration)),' s'])
    grid on
end
| improve this answer | |
$\endgroup$
  • $\begingroup$ Hi, thank you. But the question is meant to be for matlab. I'm not sure how to incorporate the different "data lengths" into the solution. Was my attempt correct? $\endgroup$ – HappyBee Feb 7 '17 at 6:47
  • $\begingroup$ Not really, $f*1$ is a number of samples, not a length in seconds $\endgroup$ – Laurent Duval Feb 7 '17 at 7:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.