How to plot the spectrum of the sum of sine waves

조회 수: 26 (최근 30일)
pq
pq 2016년 4월 7일
이동: Voss 2024년 2월 27일
I need to plot the spectrum of the sum of 3 sine waves (100 Hz & 20 dB SPL, 300 Hz& 30 dB SPL, and 400 Hz & 15 dB SPL). This is what I have so far, but the amplitude on the y axis seems wrong.
% Sampling
fs = 1000; % Sampling rate [Hz]
Ts = 1/fs; % Sampling period [s]
fNy = fs / 2; % Nyquist frequency [Hz]
duration = 10; % Duration [s]
t = 0 : Ts : duration-Ts; % Time vector
noSamples = length(t); % Number of samples
A_1 = 20;
A_2 = 30;
A_3 = 15;
f_1 = 100;
f_2 = 300;
f_3 = 400;
s_1 = A_1*sin((2*pi*f_1*t));
s_2 = A_2*sin((2*pi*f_2*t));
s_3 = A_3*sin((2*pi*f_3*t));
% Contaminated signal
xn = s_1+s_2+s_3;
% Frequency analysis
f = 0 : fs/noSamples : fs - fs/noSamples; % Frequency vector
% FFT
x_fft = abs(fft(x));
xn_fft = abs(fft(xn));
% Plot
plot(f,xn_fft);
xlim([0 fNy]);
xlabel('Frequency (Hz)')
ylabel('Amplitude (dB SPL)')
title('{Spectrum}')
  댓글 수: 2
Joyce
Joyce 2024년 2월 27일
이동: Voss 2024년 2월 27일
Generate a composite signal by summing 2 sine waves of frequencies 100HZ and 300 HZ APPLY FFT components write matlab program to plot magnitude spectrum
Voss
Voss 2024년 2월 27일
이동: Voss 2024년 2월 27일

댓글을 달려면 로그인하십시오.

답변 (1개)

Rick Rosson
Rick Rosson 2016년 4월 10일
x_fft = abs(fft(x)/noSamples);
xn_fft = abs(fft(xn)/noSamples);

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by