- •Пояснительная записка
- •Введение
- •1.Оцифровка аналогового сигнала
- •2.Ограничение спектра дискретного сигнала
- •3. Выбор модуляции и расчет модулированной частоты
- •4. Преобразование модулированного сигнала в дополнительный диапазон. Процедура получения дискретно-аналитического сигнала (преобразователь гильберта)
- •5. Демодуляция полученного сигнала и сравнение его с первоначальным сигналом
- •Заключение
- •Список использованных источников
- •Приложение а
Приложение а
Листинг программы 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
