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

ЛР 2 вариант 4 (ЦОС) отчёт - Дискретное преобразование Фурье. Амплитудный и фазовый спектры сигналов

.docx
Скачиваний:
31
Добавлен:
13.02.2021
Размер:
242.74 Кб
Скачать

ОТЧЁТ К ЛАБОРАТОРНОЙ РАБОТЕ №2

по дисциплине «Цифровая обработка сигналов»

Дискретное преобразование Фурье. Амплитудный и фазовый спектры сигналов

2020

Выполнение работы: (номер по списку - 4)

Дано:

fs = 64 Гц – частота дискретизации;

Ти = 1 с – длительность сигналов;

f1 = 4 Гц - частота первого сигнала

f2 – (4 + 4) = 8Гц - частота второго сигнала

φ01 = 3π/4 – начальная фаза первого сигнала;

φ02 = 2π/4 – начальная фаза второго сигнала;

u1 = 1 – амплитуда первого сигнала;

u2 = 0,8 – амплитуда второго сигнала

  1. Сформировать сумму двух косинусоидальных сигналов с частотами f1 и f2 и начальными фазами φ01 и φ02. Изобразить полученную сумму сигналов на графике. Для построения в MATLAB графиков следует использовать функции figure, plot, subplot. График следует изобразить первым в общем поле с помощью функции subplot с параметрами 5, 1, 1

Функция для рисования графиков (решили сделать отдельную функцию, чтобы потом каждый раз её не расписывать).

function f = my_plot(Name_1, A, B, Name_2, C, D, Name_3, E, Name_4, F, Name_5, G)

name_1 = Name_1

a = A;

b = B;

name_2 = Name_2

c = C;

d = D;

name_3 = Name_3

e = E;

name_4 = Name_4

f = F;

name_5 = Name_5

g = G;

figure

subplot(5,1,1); plot(a,b); title (name_1); hold on; grid on;

subplot(5,1,2); plot(c,d); title (name_2); hold on; grid on;

subplot(5,1,3); plot(c,e); title (name_3); hold on; grid on;

subplot(5,1,4); plot(c,f); title (name_4); hold on; grid on;

subplot(5,1,5); plot(c,g); title (name_5); hold on; grid on;

end

Далее сам код, откуда потом вызываем нашу функцию:

fs=64; %частота дискретизации

T_imp=1; %длительность сигналов

f_1=4; %частота первого сигнала - номер по списку

f_2=8; %частота второго сигнала номер по списку, плюс остаток от деления на 9 номера по списку

phi_01=3*pi/4; % начальная фаза первого сигнала

phi_02=2*pi/4; %начальная фаза второго сигнала

u_1=1; % амплитуда первого сигнала

u_2=0.8; % амплитуда второго сигнала

T=1/fs;

n=0:fs-1; % массив значений по частоте (координата х)

S1=u_1*cos(2*pi*f_1*n*T+phi_01); %первый сигнал

S2=u_2*cos(2*pi*f_2*n*T+phi_02); % второй сигнал

S_sum=S1+S2; % суммарный сигнал

n_S_sum = 0:T:1-T; % промежуток для суммарного сигнала

my_plot ('Суммарный график', n_S_sum,S_sum, 'Амплитудный спектр для суммарного сигнала', n,DPF_abs, 'Действительный спектр для суммарного сигнала', Re, 'Мнимый спектр для суммарного сигнала', Im, 'Фазовый спектр для суммарного сигнала', phase_spec)

Рисунок 1. Суммарный график

  1. Для суммы сигналов из п.1 вычислить дискретное преобразование Фурье и построить амплитудный, фазовый, действительный и мнимый спектры. Изобразить полученные спектры сигналов на графике. Графики следует изобразить на позициях 2, 3, 4, 5 в общем поле с помощью функции subplot с параметрами 5, 1, 2-5. Убедиться, что полученные амплитуды и положения пиков амплитудного спектра соответствуют заданной сумме сигналов, свойствам амплитудного спектра действительного сигнала. Обосновать. Убедиться, что полученные амплитуды и положения пиков фазового спектра соответствуют заданной сумме сигналов, свойствам фазового спектра действительного сигнала. Обосновать.

Добавляем расчёты амплитудного, фазового, мнимого и действительного спектров и рисуем графики.

dpf=fft(S_sum,fs); %вычисление ДПФ

DPF_abs=abs(dpf); %вычисление амплитудного спектра

Re=real(dpf); % вычисление действительной части

Im=imag(dpf); % вычисление мнимой части

phase_spec=atan2(Im+0.00001, Re+0.0001); % вычисление фазового спектра

my_plot ('Суммарный график', n_S_sum,S_sum, 'Амплитудный спектр для суммарного сигнала', n,DPF_abs, 'Действительный спектр для суммарного сигнала', Re, 'Мнимый спектр для суммарного сигнала', Im, 'Фазовый спектр для суммарного сигнала', phase_spec)

Рисунок 2. Все графики в одном окне

Доказательство

f1 = 4;

f2 = 8;

u1 = 1;

u2 = 0.8;

T = 1/fs = 1/64;

N = 64;

phi1 = 3*pi / 4;

phi2 = 2*pi / 4

Расчёт координат х, где будут пики в амплитудном спектре:

x1 = f1 * T * N = (4 * 64) / 64 = 4

x2 = f1 * T * N = (8 * 64) / 64 = 8

По свойству симметричности амплитудного спектра относительно его середины (т.е. N / 2), то остальные пики будут в x3 = 56 и x4 = 60

Расчёт высоты пиков амплитудного спектра:

A1 = u1 * N / 2 = 1 * 64 / 2 = 32 = A4 (по свойству симметричности)

A2 = u2 * N / 2 = 0.8 * 64 / 2 = 25.6 = А3 (по свойству симметричности)

Т.к. пики в фазовом спектре возникают в тех же координатах, что и пики в амплитудном спектре, то повторный расчёт приводить не будем (см. выше).

Расчёт пиков фазового спектра:

phi1 = 3 * pi / 4 = 2.356 = - phi 4 (по свойствам симметричности)

phi2 = 2 * pi / 4 = 1.571 = - phi 3 (по свойствам симметричности)

  1. К сумме сигналов из п.1 добавить шум. (Амплитуда Aшум = 2). Шум сформировать с помощью функции rand(1, N). Изобразить полученную сумму сигналов на графике. График следует изобразить первым в общем поле (отдельном от уже построенного в п.п. 1,2) с помощью функции subplot с параметрами 5, 1, 1.

Добавляем к сумме сигналов рассчитанный шум.

NoiseAmp=2; % амплитуда шума

noise=NoiseAmp-NoiseAmp*2*rand (1,fs); % расчёт шума

Noisy_S_sum = noise+S_sum; % сумма сигналов + шум

my_plot ('Сумма сигналов с шумом', n_S_sum, Noisy_S_sum, 'Амплитудный спектр для суммы сигналов с шумом', n,DPF_2_abs, 'Действительный спектр для суммы сигналов с шумом', Re_2, 'Мнимый спектр для суммы сигналов с шумом', Im_2, 'Фазовый спектр для суммы сигналов с шумом', phase_spec_2)

Рисунок 3. График суммарного сигнала с шумом

  1. Повторить действия п.2 для сигнала с шумом из п.3. Дать обоснование изменению некоторых параметров спектров.

Рассчитываем спектры для суммарного сигнала с шумом.

dpf_2=fft(Noisy_S_sum,fs); %вычисление ДПФ

DPF_2_abs=abs(dpf_2); %вычисление амплитудного спектра

Re_2=real(dpf_2); % вычисление действительной части

Im_2=imag(dpf_2); % вычисление мнимой части

phase_spec_2=atan2(Im_2+0.00001, Re_2+0.0001); % вычисление фазового спектра

my_plot ('Сумма сигналов с шумом', n_S_sum, Noisy_S_sum, 'Амплитудный спектр для суммы сигналов с шумом', n,DPF_2_abs, 'Действительный спектр для суммы сигналов с шумом', Re_2, 'Мнимый спектр для суммы сигналов с шумом', Im_2, 'Фазовый спектр для суммы сигналов с шумом', phase_spec_2)

Рисунок 4. Построенные графики спектров для сигнала с шумом

  1. Сформировать комплексный сигнал cos + i∙sin с частотой f1 и начальной фазой φ0.

Номер по списку - 4:

  • Nи = 4 + 10 + 1 = 15 – длительность сигнала в отсчётах (Nи должно быть нечётным)

  • f1 = 1;

  • phi_0 = pi/4; % остаток от деления номера по списку на 4 * pi/4 = 0 (поэтому взяли 1* pi/4 = pi/4)

  • N = 128 – длина в отсчётах периода вычисления ДПФ;

  • T = 1/(3∙ 1 ∙ 4 + 1) = 1/13 – период дискретизации;

Выбрать отсчёты n для построения сигнала таким образом, чтобы он своим центром располагался в точке 0 на графике. Изобразить полученный сигнал на графике, при этом действительная и мнимая части должны быть изображены вместе разными цветами на одном графике. График следует изобразить первым в общем поле с помощью функции subplot с параметрами 3, 1, 1.

number = 4; % номер варианта

N_imp=15; % длительность сигнала в отсчётах

f_1 = 1; % остаток от деления номера по списку на 4

phi_0 = pi/4; % остаток от деления номера по списку на 4 * pi/4 = 0 (поэтому взяли 1* pi/4 = pi/4)

N = 128; % длина в отсчётах периода вычисления ДПФ

T_d = 1/(3*f_1*mod(number,8)); % период дискретизации

n_next = (0+(N_imp-1))/2; % точка справа, где у=0

n_past = (0-(N_imp-1))/2; % точка слева, где у=0

n_array = [n_past:n_next]; % массив для

n_Td_array = n_array.*T_d; % поэлементное умножение

S_3 = cos(2*pi*f_1*n_Td_array+phi_0)+i*sin(2*pi*f_1*n_Td_array+phi_0); % новый сигнал

Arr_1=[S_3(n_next+1:N_imp)];

Arr_2=[zeros(1, N - N_imp)];

Arr_3=[S_3(1:n_next)];

Sg_3=[Arr_1 Arr_2 Arr_3];

Re_3 = real(Sg_3); % вычисление действительной части спектра

Im_3 = imag(Sg_3); % вычисление мнимой части спектра

figure

subplot(3,1,1); plot (Re_3, 'b'); hold on; plot (Im_3, 'r'); grid on; title ('Сигнал Re + Im') % построение графика Im + Re

Рисунок 5. График Re (синий) и Im (красный)

  1. Для сигнала из п.5 вычислить дискретное преобразование Фурье и построить амплитудный и фазовый спектры. Изобразить полученные спектры сигналов на графике. Графики следует изобразить на позициях 2, 3 в общем поле с помощью функции subplot с параметрами 3, 1, 2-3. Убедиться, что полученные спектры соответствуют заданному сигналу, свойствам спектров комплексного сигнала. Обосновать.

dpf_Sg3=fft(Sg_3,N); %вычисление ДПФ

DPF_abs_Sg3=abs(dpf_Sg3); %вычисление амплитудного спектра

Re_Sg3=real(dpf_Sg3); % вычисление действительной части

Im_Sg3=imag(dpf_Sg3); % вычисление мнимой части

phase_spec_Sg3=atan2(Im_Sg3+0.00001, Re_Sg3+0.0001); % вычисление фазового спектра

subplot(3,1,2); plot (DPF_abs_Sg3); hold on; grid on; title ('Амплитудный спектр для Sg 3') % построение графика амплитудного спектра для S_3

subplot(3,1,3); plot (phase_spec_Sg3); hold on; grid on; title ('Фазовый спектр для Sg 3') % построение графика фазового спектра для S_3

Рисунок 6. Амплитудный и фазовый спектры для S_3

Точка максимума для амплитудного спектра:

x = f1 * T * N = 1 * 128 / 3 * 1 * 4 = 128 / 12 = 10.67 + 1 = 11.67

Определение нулей для амплитудного спектра:

N / Nimp = 128 / 15 = 8.53

Между первым нулями около главного пика будет 8.53 * 2 = 17

20 – 3 = 17

Проверка фазового спектра:

в точке амплитудного максимума (по координате х) в фазовом спектре будет значение, равное phi0.

phi0 = pi / 4 = 0,785

  1. Добавить к отсчётам n для сигнала из п.5 сдвиг shift = 4 – сдвиг сигнала относительно центрального расположения. При этом если номер по списку четный, то выбрать положительный сдвиг, если нечетный, то отрицательный. Сформировать сдвинутый сигнал cos + i∙sin c использованием новых отсчётов n. Изобразить полученный сигнал на графике, при этом действительная и мнимая части должны быть изображены вместе разными цветами на одном графике. График следует изобразить первым в общем поле с помощью функции subplot с параметрами 3, 1, 1.

shift = 4; % значение сдвига

n_next_shift = n_next+shift; % сдвиг в положительную сторону, т.к. чётный вариант

n_past_shift = n_past+shift; % сдвиг в положительную сторону, т.к. чётный вариант

n_shift=(n_past_shift:1:n_next_shift); % даипазон со сдвигом

Sg_shift = cos(2*pi*f_1*T_d*n_shift+phi_0)+i*sin(2*pi*f_1*T_d*n_shift+phi_0); % формирование сигнала со сдвигом

Arr_4=[Sg_shift(n_next_shift+1:N_imp)];

Arr_5=[Sg_shift(1:(n_next_shift))];

Sg_shift=[Arr_4 Arr_2 Arr_5]; % построение массива для графика со сдвигом

DPF_Sg_shift =fft(Sg_shift, N); %ДПФ для графика со сдвигом

Re_shift = real(Sg_shift); % действительная часть

Im_shift = imag (Sg_shift); % мнимаяч часть

figure

subplot(3,1,1); plot (Re_shift, 'b'); hold on, grid on, plot (Im_shift, 'r'); title ('График Re + Im со сдвигом'); % построение графика Re + Im со сдвигом

Рисунок 7. График Re (синий) + Im (красный) со сдвигом

  1. Повторить действия п.6 для сигнала из п.7. Дать обоснование изменению некоторых параметров спектров.

Re_fft_shift = real(DPF_Sg_shift);

Im_fft_shift = imag(DPF_Sg_shift);

fft_shift = abs(DPF_Sg_shift);

phase_spec_shift=atan2(Im_fft_shift+0.00001, Re_fft_shift+0.0001); % вычисление фазового спектра для графика со сдвигом

subplot(3,1,2); plot (fft_shift); hold on; grid on; title ('Амплитудный спектр для графика со сдвигом'); % построение амплитудного графика со сдвигом

subplot(3,1,3); plot (phase_spec_shift); hold on; grid on; title ('Фазовый спектр для графика со сдвигом'); % построение фазового графика со сдвигом

Рисунок 8. Графики со сдвигом