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

Лабы / bpf

.m
Скачиваний:
16
Добавлен:
10.04.2019
Размер:
3 Кб
Скачать
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
Соседние файлы в папке Лабы