Plotting amplitude spectrum of a signal
75 views (last 30 days)
Show older comments
i got this sygnal
tmax=0.5;
t=0:0.001:tmax;
fs=1000;
tsamp=0:1/fs:tmax;
f1 = 18;
f2 = 321.37;
y = sin(2*pi*f1*tsamp) + sin(2*pi*f2*tsamp);
figure();
plot(t, y);
grid on;
how do I plot it's amplitude spectrum?
0 Comments
Accepted Answer
Star Strider
on 8 Jan 2023
Try something like this —
tmax=0.5;
t=0:0.001:tmax;
fs=1000;
tsamp=0:1/fs:tmax;
f1 = 18;
f2 = 321.37;
y = sin(2*pi*f1*tsamp) + sin(2*pi*f2*tsamp);
figure();
plot(t, y);
grid on;
L = numel(t);
Fn = fs/2;
NFFT = 2^nextpow2(L);
FTy = fft(y,NFFT)/L;
Fv = linspace(0, 1, NFFT/2+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTy(Iv))*2)
grid on
xlabel('Frequency')
ylabel('Magnitude')
FTyw = fft(y(:).*hann(L),NFFT)/L;
figure
plot(Fv, abs(FTy(Iv))*2)
grid on
xlabel('Frequency')
ylabel('Magnitude')
title('Windowed')
.
4 Comments
Star Strider
on 8 Jan 2023
The hann function is part of the Signal Processing Toolbox. Just delete that part of my code, and note that it will still be here if you need it for future reference. (My intent was to demonstrate doing a power-of-2 fft and using a window function.)
More Answers (1)
Sulaymon Eshkabilov
on 8 Jan 2023
Edited: Sulaymon Eshkabilov
on 8 Jan 2023
tmax=0.5;
t=0:0.001:tmax;
fs=1000;
tsamp=0:1/fs:tmax;
f1 = 18;
f2 = 321.37;
y = sin(2*pi*f1*tsamp) + sin(2*pi*f2*tsamp);
figure();
plot(t, y);
grid on;
Y =movmedian(y, 5); % Amplitude
figure
plot(t,Y)
grid on
xlabel('x')
ylabel('|y(x)|')
0 Comments
See Also
Categories
Find more on Time-Frequency Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!