Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа Чунихин.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
514 Кб
Скачать
☆

Приложение а

Листинг программы MATLAB

Функция построения характеристик ПГ:

function plot_fir(R,b,Fs1)

% Построение графиков характеристик КИХ-фильтра

% R-порядок КИХ-фильтра

% b-вектор коэффициентов передаточной функции

% a=[1]-коэффициент знаменателя передаточной функции

% Fs1-частота дискретизации

a=[1];n=0:R;

subplot(3,1,1),stem(n,b,'fill','MarkerSize',3),xlabel('n'),...

title('Impulse Response'),grid on;

fm=0:((Fs1/2)/200):Fs1/2;

H=freqz(b,a,fm,Fs1);MAG=abs(H);PHASE=angle(H);

subplot(3,1,2),plot(fm,MAG),xlabel('f(Hz)'),title('MAGNITUDE'),grid on;

subplot(3,1,3),plot(fm,PHASE),xlabel('f(Hz)'),title('PHASE'),grid on;

end

Основной код программы:

clear all

%% Параметры импульса

dF=80e6; % Частота дискретизации, Гц

dt=1/dF; % Интервал дискретизации, сек

%% Формирование массива временных отсчетов

t=-1e-5:dt:28.3e-3; % отчеты временной оси

%% Прямоугольный импульс

ti1=7e-3; % Длительность импульса

x1=3*rectpuls(t-ti1/2,ti1);

subplot(2,1,1);

plot(t,x1,'k'),grid;

title('Прямоугольный импульс');

xlabel('мс');

ylabel('В');

ylim([-0.5 3.5]);

subplot(2,1,2);

stem(t,x1,'k.'),grid;

title('Прямоугольный импульс (цифра)');

xlabel('nT');

ylabel('В');

ylim([-0.5 3.5]);

NFFT=2^nextpow2(length(x1));

y1=fft(x1,NFFT)/length(x1);

f=dF/2*linspace(0,1,NFFT/2+1);

y1=y1/max(y1);

% Plot single-sided amplitude spectrum

figure;

subplot(2,1,1);

plot(f,2*abs(y1(1:NFFT/2+1)));

grid on;

title('АЧХ');

ylabel('y1(f)');

xlabel('f');

subplot(2,1,2);

plot(f,angle(y1(1:NFFT/2+1)));

grid on;

title('ФЧХ');

ylabel('y1(f)');

xlabel('f');

%% Синусоидальный импульс

t11=7e-3;

t22=19e-3;

x2=4*sin(pi*(t-t11)/12e-3).*(t>=t11).*(t<=t22);

figure;

subplot(2,1,1);

plot(t,x2,'k'),grid;

title('Синусоидальный импульс');

xlabel('мс');

ylabel('В');

ylim([-0.5 4.5]);

subplot(2,1,2);

stem(t,x2,'k.'),grid;

title('Синусоидальный импульс (цифра)');

xlabel('nT');

ylabel('В');

ylim([-0.5 4.5]);

NFFT=2^nextpow2(length(x2));

y2=fft(x2,NFFT)/length(x2);

f=dF/2*linspace(0,1,NFFT/2+1);

y2=y2/max(y2);

% Plot single-sided amplitude spectrum

figure;

subplot(2,1,1);

plot(f,2*abs(y2(1:NFFT/2+1)));

grid on;

title('АЧХ');

ylabel('y2(f)');

xlabel('f');

subplot(2,1,2);

plot(f,angle(y2(1:NFFT/2+1)));

grid on;

title('ФЧХ');

ylabel('y2(f)');

xlabel('f');

%% Треугольный импульс

t33=27e-3;

x3=3*tripuls((t-t22)-4e-3,8e-3);

figure;

subplot(2,1,1);

plot(t,x3,'k'),grid;

title('Треугольный импульс');

xlabel('мс');

ylabel('В');

ylim([-0.5 3.5]);

subplot(2,1,2);

stem(t,x3,'k.'),grid;

title('Треугольный импульс (цифра)');

xlabel('nT');

ylabel('В');

ylim([-0.5 3.5]);

NFFT=2^nextpow2(length(x3));

y3=fft(x3,NFFT)/length(x3);

f=dF/2*linspace(0,1,NFFT/2+1);

y3=y3/max(y3);

% Plot single-sided amplitude spectrum

figure;

subplot(2,1,1);

plot(f,2*abs(y3(1:NFFT/2+1)));

grid on;

title('АЧХ');

ylabel('y3(f)');

xlabel('f');

subplot(2,1,2);

plot(f,angle(y3(1:NFFT/2+1)));

grid on;

title('ФЧХ');

ylabel('y3(f)');

xlabel('f');

%% Трапецеидальный импульс

t44=28e-3;

x4=-9*trapmf(t,[t33 t33+0.08e-3 27.67e-3 t44]);

figure;

subplot(2,1,1);

plot(t,x4,'k'),grid;

title('Трапецеидальный импульс');

xlabel('мс');

ylabel('В');

ylim([-9.5 0.5]);

subplot(2,1,2);

stem(t,x4,'k.'),grid;

title('Трапецеидальный импульс (цифра)');

xlabel('nT');

ylabel('В');

ylim([-9.5 0.5]);

NFFT=2^nextpow2(length(x4));

y4=fft(x4,NFFT)/length(x4);

f=dF/2*linspace(0,1,NFFT/2+1);

y4=y4/max(y4);

% Plot single-sided amplitude spectrum

figure;

subplot(2,1,1);

plot(f,2*abs(y4(1:NFFT/2+1)));

grid on;

title('АЧХ');

ylabel('y4(f)');

xlabel('f');

subplot(2,1,2);

plot(f,angle(y4(1:NFFT/2+1)));

grid on;

title('ФЧХ');

ylabel('y4(f)');

xlabel('f');

%% Общий импульс

x=x1+x2+x3+x4;

figure;

plot(t,x,'k'),grid;

title('Общий импульс (восстановленный)');

ylim([-10 5]);

xlabel('ms');

ylabel('В');

figure;

stem(t,x,'k.');

title('Общий импульс (цифра)');

ylim([-10 5]);

grid on;

xlabel('nT');

ylabel('В');

figure;

subplot(2,1,1);

plot(t,x,'k');

grid on;

title('Общий импульс (восстановленный)');

ylim([-10 5]);

xlabel('ms');

ylabel('В');

subplot(2,1,2);

stem(t,x,'k.');

title('Общий импульс (цифра)');

ylim([-10 5]);

xlabel('nT');

ylabel('В');

grid on;

NFFT=2^nextpow2(length(x));

y=fft(x,NFFT)/length(x);

f=dF/2*linspace(0,1,NFFT/2+1);

y=y/max(y);

figure;

subplot(2,1,1);

plot(f,2*abs(y(1:NFFT/2+1)));

grid on;

title('АЧХ');

ylabel('y(f)');

xlabel('f');

subplot(2,1,2);

plot(f,angle(y(1:NFFT/2+1)));

grid on;

title('ФЧХ');

ylabel('y(f)');

xlabel('f');

%% Амплитудная Манипуляция

Fc=dF*5; % Несущая частота

FsdF = 5;

Fs=dF*FsdF;

t1=(0:length(x)*FsdF-1)/Fs;

% формирование АМн-сигнал

s_ask=x(floor(dF*t1)+1.*cos(2*pi*Fc*t1));

figure;

plot(t1,s_ask,'k'),grid;

ylim([-9.5 4.5]);

xlabel('ms');

ylabel('B');

title('Амплитудная Манипуляция');

NFFT=2^nextpow2(length(s_ask));

y6=fft(s_ask,NFFT)/length(s_ask);

f=dF/2*linspace(0,1,NFFT/2+1);

y6=y6/max(y6);

figure;

plot(f,2*abs(y6(1:NFFT/2+1)));

grid on;

xlim([0 dF/2]);

title('АЧХ');

ylabel('y(f)');

xlabel('f');

%% АМ (через функцию ammod)

t=-1e-5:dt:28.3e-3; % отчеты временной оси

%Fc=dF*0.5;

Fc=10000; % Несущая частота

z1=ammod(x,Fc,dF,0,13);

figure;

plot(t,z1),grid;

title('Амплитудная модуляция');

xlabel('ms');

ylabel('B');

NFFT=2^nextpow2(length(z1));

y5=fft(z1,NFFT)/length(z1);

f=dF/2*linspace(0,1,NFFT/2+1);

y5=y5/max(y5);

figure;

plot(f,2*abs(y5(1:NFFT/2+1)));

grid on;

xlim([0 dF/2]);

title('АЧХ');

ylabel('y(f)');

xlabel('f');

figure;

A_m=abs(complex(x));

plot(t,A_m,'r-');grid on;

ylim([-0.5 9.5]);

title('НЧ огибающая');

xlabel('ms');

ylabel('B');

%% Смещение по частоте

x1=z1.*cos(2*pi*38000000*t);

NFFT=2^nextpow2(length(x1));

y=fft(x1,NFFT)/length(x1);

f=dF/2*linspace(0,1,NFFT/2+1);

y=y/max(y);

figure;

subplot(2,1,1);

plot(f,2*abs(y(1:NFFT/2+1)));

xlim ([0 40000000]);

grid on;

title('АЧХ сдвинутая');

ylabel('y(f)');

xlabel('f');

subplot(2,1,2);

plot(f,2*abs(y(1:NFFT/2+1)));

xlim ([37989000 38011000]);

grid on;

title('АЧХ сдвинутая (увеличенный масштаб)');

ylabel('y(f)');

xlabel('f');

figure;

plot(t,x1);

grid on;

title('Сигнал сдвинутый');

ylabel('x(t)');

xlabel('t');

%% Характеристики ПГ

Fs1=220;

fk1=10;ft1=20;ft2=92;fk2=102; f=[fk1 ft1 ft2 fk2];

m=[0 1 0];

d2=0.1;d1=0.05;ripple=[d2 d1 d2];

[R,f0,m0,weight]=firpmord(f,m,ripple,Fs1);

[b,err,opt]=firgr({'mineven',R},f0,m0,ripple,'hilbert');

R=opt.order;

figure;

plot_fir(R,b,Fs1);

%% ПГ

pg=hilbert(x1);

figure;

plot(t,real(pg),'k'),grid on

hold on

plot(t,imag(pg),'r-.')

hold off

legend('Real Part','Imaginary Part')

xlim([0 4.5e-7])

ylim([-14 14])

xlabel('ms');

ylabel('B');

%% Выход

yout=abs(pg);

figure;

plot(t,yout),grid on;

r=10000

yout1=decimate(yout,r);

САМАРА 2017