Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab3_MOTS.docx
Скачиваний:
0
Добавлен:
02.01.2025
Размер:
1.86 Mб
Скачать

Обработка результатов эксперимента

Напишем команды для очистки командного окна, очистки памяти от всех переменных и закрытия всех открытых графических окон.

clc

clear all

close all

  1. Создадим два сигнала x1=cos(2*pi*f1*t); x2=4*cos(2*pi*f2*t). Частота дискретизации 4096, время анализа 1 секунда. Частоты f1 и f2 равны 100 и 350 Гц. Получим модуль спектра двух сигналов, построим графики (рис1 и рис2).

fs = 4096;

f1 = 100;

f2 = 350;

t = 0:1/fs:1-1/fs;

x1=cos(2*pi*f1*t);

x2=4*cos(2*pi*f2*t);

f = linspace(0, fs, length(x1));

abs(fft(x1))

abs(fft(x2))

figure()

subplot(2, 1, 1)

plot(t, x1, 'green')

xlim([0, 0.05]);

title('x1 signal');

subplot(2, 1, 2)

plot(f, abs(fft(x1)));

title('x1 amplitude spectrum');

figure()

subplot(2, 1, 1)

plot(t, x2, 'green')

xlim([0, 0.015]);

title('x2 signal');

subplot(2, 1, 2)

plot(f, abs(fft(x2)));

title('x2 amplitude spectrum');

Рис.2

Рис.1

  1. Создадим еще два сигнала: x3=x1+x2; x4=x1.*x2 и постройте их спектры (рис.3 и рис.4).

x3 = x1+x2;

x4 = x1.*x2;

figure()

subplot(2, 1, 1)

plot(t, x3, 'green')

xlim([0, 0.05]);

title('x3 signal');

subplot(2, 1, 2)

plot(f, abs(fft(x3)));

title('x3 amplitude spectrum');

figure()

subplot(2, 1, 1)

plot(t, x4, 'green')

xlim([0, 0.017]);

title('x4 signal');

subplot(2, 1, 2)

plot(f, abs(fft(x4)));

title('x4 amplitude spectrum');

Рис.4

Рис.3

  1. На временном интервале отсчетов создадим -импульс и получим его спектр (рис.5). При смещении импульса меняется только фаза.

N = 2^7;

t = 0:1/N:1-1/N;

delta = zeros(1, N);

delta(N/2+1)=1;

figure

subplot(3,1,1)

bar(t, delta, 'green')

grid on

title('delta')

subplot(3,1,2)

plot(t, abs(fft(delta)))

ylim([0 1.1])

grid on

title('abs spectrum')

subplot(3,1,3)

plot(t, angle(fft(delta)))

xlim([0 0.7])

grid on

title('phase spectrum')

Рис.5

  1. В цикле последовательно будем увеличивать ширину импульса, наблюдая соответствующие изменения его спектра (рис.6). Сделаем 10 этапов моделирования.

N=2^7;

T=1;

dt=T/(N);

Nyq=N/(2*T); % nyquist frequency

df=1/T;

t = linspace(0,T,N);

for i=(1:10)

figure

T_h = i/100; % impuls hight duration

s = zeros(1, N);

s(N/2 +1 - (T_h/dt)/2 : N/2 + (T_h/dt)/2) = 1;

F=fft(s)/N;

subplot(2, 1, 1);

bar(t,s);%

ylim([-0.1, 1.1])

title('Impulse')

F1=F(1:N/2+1); % positive frequencies

F2=F(N/2+1:N); % negative frequencies

F=[F2,F1]; % full

nu=-Nyq+df*(0:N);

subplot(2, 1, 2)

plot(nu(1:N),abs(F(1:N)))

title('Spectrum')

end

Рис. 5

  1. На том же временном интервале создадим периодический прямоугольный сигнал со скважностью 2 (меандр) и количеством периодов 4. Построим его спектр (рис.6).

N=2^7;

T=4;

dt=T/(N);

Nyq=N/(2*T); % nyquist frequency

df=1/T;

t = 0:1/1000:2;

signal = 0.5*square(2*pi*30*t)+0.5;

F=fft(signal)/N;

figure

subplot(2, 1, 1)

bar(t,signal)

axis([0 0.2 0 1.2])

xlabel("Time (sec)")

ylabel("Amplitude")

title("Square signal")

F1=F(1:N/2+1); % positive frequencies

F2=F(N/2+1:N); % negative frequencies

F=[F2,F1]; % full

nu=-Nyq+df*(0:N);

subplot(2, 1, 2) %bar(fft(abs(x2)), 10)

bar(nu(1:N),abs(F(1:N)), 'red')

ylim([-0.01, 0.1]);

xlim([1, 9]);

title('Spectrum')

Рис.6

  1. Покажем базисные функции преобразования Фурье, Уолша и Хаара. Базис Уолша сформируем с помощью матрицы [1 1; 1 -1] и кронекеровского перемножения этой матрицы саму на себя. Построим графики (рис.7 и рис.8)

W_1 = [1, 1; 1, -1];

W = W_1;

for i = (1:5)

W = kron(W_1, W);

end

figure

subplot(2, 1, 1)

bar(t, signal)

ylim([-0.1, 1.1]);

xlim([0, 0.2]);

grid on

title('signal');

signal_W = fwht(signal); % fast Walsh transform

subplot(2, 1, 2)

%fw = 1:N;

bar(signal_W, 'black')

ylim([-0.01, 0.51]);

xlim([0, 30]);

grid on

title(' Walsh-transformed signal');

[cA, cD] = dwt(signal, 'haar'); % Haar transform

figure()

subplot(2, 1, 1);

plot(cA);

title('Haar Approximation Coefficients');

xlim([0, 600]);

subplot(2, 1, 2);

plot(cD);

title('Haar Detail Coefficients');

xlim([0, 600]);

Рис.8

Рис.7

  1. Построим спектр с помощью преобразований из пункта 4 сигнала х1 из пункта 1, а затем сигнала из 5. Сравним их спектры (на рис.9 и рис.10).

N=2^7;

T=1;

fs=4096;

f1=100;

t = 0:1/fs:1-1/fs;

for i=(1:10)

figure()

T_h = i;

x1=cos(T_h*2*pi*f1*t);

F=fft(x1)/N;

subplot(2, 1, 1);

plot(t,x1);%

xlim([0.1, 0.15])

title('Signal')

subplot(2, 1, 2)

f = linspace(0, fs, length(x1));

plot(f, abs(fft(x1)), 'red', 'LineWidth',2)

title('Spectrum')

end

dt=T/(N);

Nyq=N/(2*T); % nyquist frequency

df=1/T;

t = 0:2*pi/N:2*pi - 2*pi/N;

for i=(1:10)

figure()

T_h = i;

signal = 0.5*square(T_h*2*pi*t)+0.5;

F=fft(signal)/N;

subplot(2, 1, 1)

plot(t/pi,signal)

xlim([0, 1])

xlabel("Time (sec)")

ylabel("Amplitude")

title("Square signal")

F1=F(1:N/2+1); % positive frequencies

F2=F(N/2+1:N); % negative frequencies

F=[F2,F1]; % full

nu=-Nyq+df*(0:N);

subplot(2, 1, 2) %bar(fft(abs(x2)), 10)

bar(nu(1:N),abs(F(1:N)), 'red')

title('Spectrum')

end

Рис.9

Рис.10

  1. Определим форму и ширину частотной характеристики двух соседних каналов анализатора Фурье, изменяя частоту сигнала с достаточно малым шагом и выделяя из спектра отчет, принадлежащий выбранному каналу. Будем использовать окно Хеннинга. Результаты представлены на графиках (рис.11 и 12)

for j=(1:2)

chan_num =j;

freq_resolution=200;

window_type = 'hamming';

Fs = 1000; % Sampling frequency

T = 1/Fs; % Sampling period

L = 1000; % Length of signal

t = (0:L-1)*T; % Time vector

for i=(0.1:0.1:1)

figure()

f0=i;

x = cos(2*pi*f0*t);

window = hamming(L)';

x_windowed = x.*window;

X = fft(x_windowed);

f = Fs*(0:(L/2))/L;

for i = 1:length(f)

freq_response(i) = abs((X(i)));

if (f(i) >= (chan_num-0.5)*freq_resolution) && (f(i) <= (chan_num+0.5)*freq_resolution)

if ~exist('lower_freq_idx', 'var')

lower_freq_idx = i;

end

upper_freq_idx = i;

end

end

channel_width = f(upper_freq_idx) - f(lower_freq_idx);

bar(f, freq_response);

title('Frequency Response');

xlim([-50 50]);

ylim([0 600]);

grid on;

end

fprintf('Channel width: %.2f Hz\n', channel_width);

end

Рис.11

Рис.12

  1. Построим частотную характеристику 3-х соседних каналов ДПФ. Меняя в частоту сигнала с шагом 0.01, запомним значение амплитуды каждого из 3-х каналов, построим их на графике (рис.13).

freq = 0:0.01:6*pi; % частоты

N = length(freq); % количество точек

channel1 = zeros(N, 1);

channel2 = zeros(N, 1);

channel3 = zeros(N, 1);

j=1;

for i = 1:N

% Модуль спектра для каждого канала

channel1(j) = abs(fft(cos(freq(i))));

channel2(j) = abs(fft(cos(2*freq(i))));

channel3(j) = abs(fft(cos(3*freq(i))));

j=j+1;

end

% Построение частотной характеристики

figure();

subplot(3,1,1)

plot(freq, channel1, 'r', 'LineWidth', 2);

title('freq__response_1')

subplot(3,1,2)

plot(freq, channel2, 'g', 'LineWidth', 2);

title('freq__response_2')

subplot(3,1,3)

plot(freq, channel3, 'b', 'LineWidth', 2);

title('freq__response_3')

Рис.13

Соседние файлы в предмете Математические основы теории систем