poster
2019-11-25, 18:21
<p>I have a signal which is a linear combination of two frequencies and I am trying to use MATLAB to determine what frequencies the (main) signal consists of. As an input I have the sample rate, <code>rate</code> and a row vector with the signal data, <code>segment</code>. </p>
<p>Now I have the following code:</p>
<pre><code>N=length(segment);
freq = rate*(0:N/2)/N;
X = fft(segment);
X=X(1:N/2+1);
plot(freq*2, abs(X))
</code></pre>
<p>And this indeed returns a graph with two peaks, one at each of the frequencies the signal consists of. Now I want to extract these frequencies. So I want to return a variable, <code>signal</code>, which is a vector of the two frequencies. </p>
<p>Hence, if my signal is created by the linear combination of a signal of <code>30 Hz</code> and one of <code>60 Hz</code>, then I want <code>signal = [30,60]</code>. I can create a graph and then identify this, but I want to cut out that middle man and just return the found frequencies, without using any toolboxes.</p>
<p>How can I find my desired frequencies?</p>
More answer... (https://stackoverflow.com/questions/58767263/using-fft-to-extract-frequency)
<p>Now I have the following code:</p>
<pre><code>N=length(segment);
freq = rate*(0:N/2)/N;
X = fft(segment);
X=X(1:N/2+1);
plot(freq*2, abs(X))
</code></pre>
<p>And this indeed returns a graph with two peaks, one at each of the frequencies the signal consists of. Now I want to extract these frequencies. So I want to return a variable, <code>signal</code>, which is a vector of the two frequencies. </p>
<p>Hence, if my signal is created by the linear combination of a signal of <code>30 Hz</code> and one of <code>60 Hz</code>, then I want <code>signal = [30,60]</code>. I can create a graph and then identify this, but I want to cut out that middle man and just return the found frequencies, without using any toolboxes.</p>
<p>How can I find my desired frequencies?</p>
More answer... (https://stackoverflow.com/questions/58767263/using-fft-to-extract-frequency)