Problem with Square() for high frequenzies

1 次查看(过去 30 天)
Hi this skript exists for analysing Aliasing of an ideal square like distortion in context of oversampling.
it works for a frequenzy of 1000 Hz but i need it to work at 20kHz. I dont really get why it doesnt work. The FFt needs the first 4 lines to work properly . thank u in advance
xsmpling=2
T = 1; % simulation time in seconds
fs =44100*xsmpling; Ts = 1/fs; % sampling frequency in Hz and sampling period
Nmax = T*fs; n = 0:Nmax-1; % simulation time (norm.)
f=20000%fsignal
x = sin(2*pi*f*Ts*n);
d = square(2*pi*f*n*Ts);
%% Spectrum
X = abs(fft(x)); X = X/max(X);
%figure('Name','frequenzy domain','NumberTitle','off');
figure()
plot((fs/Nmax)*(0:Nmax-1),20*log10(X),'LineWidth',2), grid
hold on
line([fs/2 fs/2],[-100 10],'LineWidth',1,'LineStyle','--')
line([20000 20000],[-100 10],'color','green','LineWidth',1,'LineStyle','--')
title('Analysis of Aliasing','FontSize',20)
hold on
axis([0 fs -60 0]);
ax = gca;
ax.FontSize = 20;
xlabel('Frequency in Hz \rightarrow','FontSize',20)
ylabel('Spectrum Magnitude in dB \rightarrow','FontSize',20)
Y = abs(fft(d)); Y = Y/max(Y);
%figure('Name','Chirp signal','NumberTitle','off');
plot((fs/Nmax)*(0:Nmax-1),20*log10(Y),'LineWidth',2), grid
legend('Signal','Nyquist','20kHz','Distortion','FontSize',20)
hold off

采纳的回答

Cris LaPierre
Cris LaPierre 2021-3-24
编辑:Cris LaPierre 2021-3-24
The issue right now is that when f>=2192, you start getting zero values in your fft results. When you take the natural log of Y in your last plot command, they turn into -inf. These get ignored when you plot. The result is that only isolated points are getting plotted. Because you have not specified a marker style, you can't see them. To see them, add a marker style to your plot command.
plot((fs/Nmax)*(0:Nmax-1),20*log10(Y),'.-','LineWidth',2), grid
^^^^ % specifies a linestyle and markerstyle

更多回答(0 个)

类别

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