Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / bpf

.m
Скачиваний:
15
Добавлен:
10.04.2019
Размер:
2.94 Кб
Скачать
clc, clear

F = 3500; %%Частота
A = 7.0; %%Амплитуда
Type = 6;
%%0 – Синусойда ; 1 - Треугольный
%%2 – Мeандр ; 3 - Пилообразный
%%4 - Пилообразный в другую сторону
%%5 - Мeандр duty 20% ; 6 - Sinc 2 периода

Fs = 20*F; T = 1/Fs; L = 3000; t = (0:L-1)*T;
N = length(t); Xpr = []; Ypr = [];

switch Type
case 0
y = A*sin(2 * pi * F * t); %%Синусойда
Yminax = -100; LobeGraph = 1;
Namesignal = 'sin';
Xpr = [3200]; Ypr = [13.9];
case 1
y = A*sawtooth(2*pi*F*t,0.5); %%Треугольный
Yminax = -170; LobeGraph = 5;
Namesignal = 'triangle';
Xpr = [3.4,10.2,17.4,24.6,31.4];
Xpr = Xpr.*10^3;
Ypr = [12.7,-6.55,-15.3,-21.7,-25.7];
case 2
y = A*square(2*pi*F*t); %%Мeандр
Yminax = -32; LobeGraph = 5;
Namesignal = 'square';
Xpr = [3.4,10.2,17.2,24.6,31.4];
Xpr = Xpr.*10^3;
Ypr = [16.3,6.25,2.25,-0.001,-2.95];
case 3
y = A*sawtooth(2*pi*F*t); %%Пилообразный
Yminax = -150; LobeGraph = 5;
Namesignal = 'sawtooth';
Xpr = [3.4,6.8,10.4,13.6,17.2];
Xpr = Xpr.*10^3;
Ypr = [9.85,3.85,-2.55,-1.75,-4.55];
case 4
y = A*sawtooth(2*pi*F*t,0); %%Пилообразный в другу сторону
Yminax = -150; LobeGraph = 5;
Namesignal = 'sawtooth(0)';
case 5
y = A*square(2*pi*F*t,20); %%Мeандр duty 20%
Yminax = -32; LobeGraph = 5;
Namesignal = 'square';
Xpr = [100,200,300,400,600];
Xpr = Xpr.*10^3;
Ypr = [-10.6,-12.6,-15.8,-22.6,-26.4];
case 6
y = pi*A*diric(pi*F*t,17); %%Sinc
Yminax = -100; LobeGraph = 5;
Namesignal = 'sinc';
Xpr = [3.4,6.8,10.4,13.6,17.2];
Xpr = Xpr.*10^3;
Ypr = [-3.35,-3.35,-3.35,-3.35,-3.35];
end

figure(1)
plot(t(1:50),y(1:50)), grid
%Подписи графика 2
title(Namesignal); xlabel('Time (s)'); ylabel('Magnitude (V)');
w = flattopwin(N);
wdata = y(:).*w;
ws = sum(w);
Y = fft(wdata)/ws;
freq = 0:Fs/N:Fs/2-Fs/N;
freq = freq';
Ymax = max(abs(Y(1:floor(N/2))));
Ydb = 20*log10(abs(Y(1:floor(N/2)))/Ymax);
figure(2)
set(2,'position',[400,400,900,400])
plot(freq,Ydb);
hold on
%%Нанесение на график снятых данных
plot(Xpr(1:LobeGraph), Ypr(1:LobeGraph),'ok');
%%Поиск и нанесение на график лепестков спектра
[Lobes, Lobesi] = findpeaks(Ydb,'SortStr','descend');
ylim([Yminax Lobes(1)+2]) %Устанавливаем маштаб по оси Y
Text = [freq(Lobesi(1));Lobes(1)];
formatSpec = 'Лепесток #0. %1.3e Hz ; %8.3f dB\n';
fprintf([Namesignal '\n-------------\n' formatSpec],Text)
plot([freq(Lobesi(1)) freq(Lobesi(1))],[Yminax Lobes(1)+2],'r')
formatSpec = 'Лепесток #%d. %1.3e Hz ; %8.3f dB\n';
flagoflegend = 1;
for i = 2:LobeGraph
flagoflegend = 0;
Text = [i-1;freq(Lobesi(i));Lobes(i)];
fprintf(formatSpec,Text)
plot([freq(Lobesi(i)) freq(Lobesi(i))],[Yminax Lobes(1)+2],'g')
end
%%Подписи графика 2
if (flagoflegend == 1)
legend('FFT Res','Results','Main lobe',5);
else
legend('FFT Res','Results','Main lobe','Lobe',5);
end
title(['FFT of ' Namesignal]); xlabel('Frequency (Hz)'); ylabel('Magnitude(dB)');
hold off
Соседние файлы в папке Лабы