Hi everyone. I have a set of samples (x(n)'s) in a table corresponding to a mysterious signal x(t). What I am trying to do is display the frequency spectrum of this set of samples with a certain resolution. I am confused on how to actually plot this frequency spectrum when I am just given a table of values, an fs, and using a certain N value. So for example, say I was given a set of samples like this: 0 1 2 3 4 5 6 7 8 9 0 1.25 0.57 -0.29 -0.78 -0.70 0.37 0.87 0.49 -0.18 How would I plot the frequency spectrum with say a resolution of 50 hz? I went about it like this, (keep in mind this code pertains to a set of samples that is 1251 long, I created the above example for ease of use), however my graph doesn't look right as the magnitudes shouldn't go above 1 since the amplitudes never go above 1? signal = xt; N = length(signal); fs = 25000; % 25000 samples per second fnyquist = fs/2; %Nyquist frequency plot(abs(fft(signal))) xlabel('Frequency Spectrum)') ylabel('Magnitude'); title('Double-sided Magnitude spectrum'); axis tight
John Michell answered .
2025-11-20
x = [0 1 2 3 4 5 6 7 8 9 0 1.25 0.57 -0.29 -0.78 -0.70 0.37 0.87 0.49 -0.18];
Fs = 50;
Fn = Fs/2;
Fx = fft(x)/length(x);
Fv = linspace(0, 1, length(x)/2+1)*Fn;
Iv = 1:length(Fv);
figure(1)
plot(Fv, abs(Fx(Iv)))
grid
xlabel('Frequency (Hz)')
ylabel('Amplitude')