Скачиваний:
2
Добавлен:
01.12.2022
Размер:
5.73 Кб
Скачать
clc;
clear all;
close all;

X0=0; % Координата “x” (на экране) нижнего левого угла окна
Y0=0; % Координата “y” (на экране) нижнего левого угла окна
W0=1800; % Ширина окна
H0=800; % Высота окна
figure('Position',[X0,Y0,W0,H0]) % Создание окна

x1=50; % Координата "x" (в окне) нижнего левого угла 1-го поля
dx=50; % Расстояние по “x” между 1-м и 2-м полями
y1=100; % Координата "y" (в окне) нижнего левого угла 1-го поля
w=335; % Ширина 1-го и 2-го полей вывода графиков
h=167; % Высота 1-го и 2-го полей вывода графиков
hAxes=zeros(3,3);

for i=[1 2 3]
% Создание 1-го поля:
hAxes(i,1)=axes('Units','pixels','Position',[x1,y1+(i-1)*(50+h),w+w,h]);
% Создание 2-го поля:
hAxes(i,2)=axes('Units','pixels','Position',[x1+dx+w+w,y1+(i-1)*(50+h),w,h]);
% Создание 3-го поля:
hAxes(i,3)=axes('Units','pixels','Position',[x1+dx+dx+w+w+w,y1+(i-1)*(50+h),w,h]);
end

axes(hAxes(3,1))

tmax=2.5;
Fs=180;
T=1/Fs;
t=0:T:tmax-T;
s=0.15+0.8*sin(2*pi*10*t)+1.5*sin(2*pi*16*t);
plot(t,s)
title('Сумма двух синусоид и константы')
grid on % Нанесение координатной сетки на график

ft=fft(s); %Расчет БПФ для сигнала
N=tmax*Fs; % Число отсчетов в тестовом сигнале
for j=1:N % Цикл перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;
else % Для всех частот, кроме нулевой:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;
end
end

axes(hAxes(3,2))

df=Fs/N; % Шаг по оси частот
for j=1:(N/2)
f(j)=df*(j-1); % Расчет аргумента для построения графика
end
stem(f,as(1:N/2),'.') % График амплитудного спектра
title('График амплитудного спектра 1')
axes(hAxes(3,3))

for j=1:N % Цикл для перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
else % Для всех частот, кроме нулевой:
psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
end
end
plot (f,psd(1:(N/2)))% График СПМ
title('График СПМ 1')

m=mean(s);
s0=s-m;
axes(hAxes(2,1))
plot(t,s0)
title('Сигнал без среднего значения')

grid on % Нанесение координатной сетки на график
ft=fft(s0); %Расчет БПФ для сигнала
N=tmax*Fs; % Число отсчетов в тестовом сигнале
for j=1:N % Цикл перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;
else % Для всех частот, кроме нулевой:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;
end
end

axes(hAxes(2,2))

df=Fs/N; % Шаг по оси частот
for j=1:(N/2)
f(j)=df*(j-1); % Расчет аргумента для построения графика
end
stem(f,as(1:N/2),'.') % График амплитудного спектра
title('График амплитудного спектра 2')
axes(hAxes(2,3))

for j=1:N % Цикл для перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
else % Для всех частот, кроме нулевой:
psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
end
end
plot (f,psd(1:(N/2)))% График СПМ
title('График СПМ 2')

w=hamming(N);
for j=1:N
sw(j)=s0(j)*w(j);
end

axes(hAxes(1,1))
plot(t,sw)
hold on
plot(t,w)
title('График оконной функции и сигнала, умноженного на нее')
grid on % Нанесение координатной сетки на график

ft=fft(sw); %Расчет БПФ для сигнала
N=tmax*Fs; % Число отсчетов в тестовом сигнале
for j=1:N % Цикл перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;
else % Для всех частот, кроме нулевой:
as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;
end
end

axes(hAxes(1,2))

df=Fs/N; % Шаг по оси частот
for j=1:(N/2)
f(j)=df*(j-1); % Расчет аргумента для построения графика
end
stem(f,as(1:N/2),'.') % График амплитудного спектра
title('График амплитудного спектра 3')

axes(hAxes(1,3))

for j=1:N % Цикл для перебора всех элементов разложения
if (j==1) % Случай нулевой частоты:
psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
else % Для всех частот, кроме нулевой:
psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;
end
end
plot (f,psd(1:(N/2)))% График СПМ
title('График СПМ 3')
Соседние файлы в папке ЛР_4