ИКТ-23 / ЛР2 ЦОС
.docxВариант 6
Задание 1:
Исходные данные
clc;clear;close all;
%пример - непрерывный сигнал и его спектр
%выбор частоты Найквиста
f0 = 2; %частота
a = 0.1; %длительность импульса (с)
T = 6*a; %временной интервал для вывода графика (c)
dt = a/50; %шаг вывода график по оси времени (с)
fb = 20; %частотный интервал вывода графика (Hz)
df = fb/401; %шаг вывода графика по частоте (Hz)
t = -T/2:dt:T/2; %дискретные моменты времени (c)
s = rectUnit(t/a).*sin(2*pi*f0*t); %вычисление сигнала
figure;
hPl=plot(t, s);
set(hPl,'LineWidth',2,'color','blue');
axis([-T/2 T/2 -1.25 1.25]);
hAx=gca;
set(hAx,'xtick',[-T/2 -T/3 -T/6 0 T/6 T/3 T/2],'FontSize',[8]);
xlabel('t (c)');
title('Signal s(t)');
grid on;
f = -fb:df:fb; %дискретные значения по частоте (Hz)
S = SpectrContin(a,f0,f); %вычисление спектра по заданной формуле
Ampl = abs(S); %вычисляем АЧХ
Re = real(S); %вычисляем действительную часть спектра
Im = imag(S); %вычисляем мнимую часть спектра
MaxSpectr = max(Ampl); %максимум для графика спектра
figure;
hPl=plot(f, Ampl);
set(hPl,'LineWidth',2,'color',[1 0 0]);
axis([-fb fb -1.25*MaxSpectr 1.25*MaxSpectr]);
hAx=gca;
set(hAx,'FontSize',[10],'xtick',[-fb -3*fb/4 -fb/2 -fb/4 0 fb/4 fb/2 3*fb/4 fb]);
xlabel('f (Hz)');
title('Spectrum A(f)');
grid on;
figure;
hPl=plot(f, Re);
set(hPl,'LineWidth',2,'color',[0.5 1 0]);
axis([-fb fb -1.2*MaxSpectr 1.2*MaxSpectr]);
hAx=gca;
set(hAx,'FontSize',[10],'xtick',[-fb -3*fb/4 -fb/2 -fb/4 0 fb/4 fb/2 3*fb/4 fb]);
xlabel('f (Hz)');
title('Spectrum ReS(f)');
grid on;
figure;
hPl=plot(f, Im);
set(hPl,'LineWidth',2,'color',[0.5 0 1]);
axis([-fb fb -1.2*MaxSpectr 1.2*MaxSpectr]);
hAx=gca;
set(hAx,'FontSize',[10],'xtick' ,[-fb -3*fb/4 -fb/2 -fb/4 0 fb/4 fb/2 3*fb/4 fb]);
xlabel('f (Hz)');
title('Spectrum ImS(f)');
grid on;
clc;clear;close all;
%пример - получение дискретного сигнала и %вычисление спектра дискретного сигнала
f0 = 2; %частота
a = 0.1; %длительность импульса (с)
F = 20; %частота Найквиста (Hz), <выбирать самим!!!>
dt = 1/(2*F); %шаг дискретизации
T = 6*a; %временной интервал для вычисления рада Фурье(c) % <выбирать самим!!!>
fb = 3*F; %частотный интервал вывода графика (Hz)
df = fb/301; %шаг вывода графика по частоте (Hz)
t = -T/2:dt:T/2; %дискретные моменты времени (c)
N1 = length(t) %проверка, чтобы число членов ряда было нечетным
if mod(N1,2) == 0
T = dt*N1;
else
T = dt*(N1+1);
end
t = -T/2:dt:T/2;
s = rectUnit(t/a).*sin(2*pi*f0*t); %вычисление дискретного сигнала
figure;
hPl=stem(t, s);
set(hPl,'LineWidth',2,'color','blue');
axis([-T/2 T/2 -1.25 1.25]);
hAx=gca;
set(hAx,'xtick',[-2*a -a 0 a 2*a],'FontSize',[8]);
xlabel('t (c)');
title('Signal s(t)');
grid on;
f = -fb:df:fb; %дискретные значения по частоте (Hz)
S = SumSd(s,F,f); %вычисление спектра дискретного сигнала
% с помощью ряда Фурье
Sc = SpectrContin(a,f0,f); %вычисление спектра непрерывного сигнала
ScSum = SumCont(a,f0,F,f); %вычисление сумму сдвинутых копий
%спектра непрерывного сигнала
Ampl = abs(S); %вычисляем АЧХ
Amplc = abs(Sc); %вычисляем АЧХ непрерывного сигнала
AmplcSum = abs(ScSum); %вычисляем АЧХ суммы сдвинутых копий
Re = real(S); %вычисляем действительную часть спектра
Im = imag(S); %вычисляем мнимую часть спектра
MaxSpectr = max(Ampl); %максимум для графика спектра
figure;
hPl=plot(f, Ampl,'r', f, Amplc-1.0*MaxSpectr,'c', f, AmplcSum-0.5*MaxSpectr,'m');
set(hPl,'LineWidth',2);
axis([-fb fb -1.25*MaxSpectr 1.25*MaxSpectr]);
hAx=gca; set(hAx,'FontSize',[10],'xtick' ,[-3*F -2*F -F 0 F 2*F 3*F]);
xlabel('f (Hz)');
title('Spectrum A(f)');
grid on;
figure;
hPl=plot(f, Re);
set(hPl,'LineWidth',2,'color',[0.5 1 0]);
axis([-fb fb -1.2*MaxSpectr 1.2*MaxSpectr]);
hAx=gca; set(hAx,'FontSize',[10],'xtick',[-3*F -2*F -F 0 F 2*F 3*F]);
xlabel('f (Hz)'); title('Spectrum ReS(f)');
grid on;
figure;
hPl=plot(f, Im);
set(hPl,'LineWidth',2,'color',[0.5 0 1]);
axis([-fb fb -1.2*MaxSpectr 1.2*MaxSpectr]);
hAx=gca;
set(hAx,'FontSize',[10],'xtick' ,[-3*F -2*F -F 0 F 2*F 3*F]);
xlabel('f (Hz)');
title('Spectrum ImS(f)');
grid on;
Задание 2
clc
clear
close all;
%% Дискретный сигнал
T = 0.3;
s1 = [0 0 0];
s2 = [0.4902 0.5560 0.5781 0.5628 0.5172 0.4492 0.3667 0.2769 0.1863 0.1003];
s3 = [0 0 0 0];
s = [s1 s2 s3];
N =length(s) % Число членов ряда Котельникова
dt = T/(N-1) % Шаг дискретизации
F = (N-1)/(2*T) % Частота Найквиста
figure;
stem(s);
grid on
%% Востановленный аналоговый сигнал
t = -T/2 : T/50 : 3*T/2;
sAnalog = SumKotel(s,F,t);
td = 0 : dt : T;
figure;
plot(t, sAnalog,'m-', td, s,'bo');
grid on
%% Востановленный аналоговый сигнал
f = -F : F/100 : F;
Sd = SumSdV(s, F, f);
figure;
plot(f,Sd,'r')
grid on
Дописываем функции
function fun = SumKotel(s,F,t)
N = length(s);
fun = 0;
T = 7.5 * 10^(-4);
dt = T/(N-1);
for n = 0:N-1
fun = fun + s(n+1)*sinc(2*F*(t-n*dt));
end
function fun = SumSdV(s,F,f)
N = length(s);
fun = 0;
for n = 0:N - 1
k = n - (N+1)/2;
fun = fun + s(n+1)*exp(-i*pi*k*f/F);
end
fun = fun/(2*F);
Рисунок 1 Аналоговый сигнал
Рисунок 2 Спектр |S_f|