Problem with Square() for high frequenzies

1 回表示 (過去 30 日間)
Adrian Alexander
Adrian Alexander 2021 年 3 月 24 日
編集済み: Cris LaPierre 2021 年 3 月 24 日
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 Center および File ExchangeSpectral Measurements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by