Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 2 Антоха.doc
Скачиваний:
9
Добавлен:
17.09.2019
Размер:
1 Мб
Скачать
☆

Xlabel('frecventa(Hz)');ylabel('Modulul')

Выделим вещественную и мнимую части комплексного спектра

Re=real(xs);Im=imag(xs);

s1=len/2-500;s2=len/2+500;

subplot(2,1,1)

plot(f(s1:s2),Re(s1:s2));grid

ylabel('Partea reala')

subplot(2,1,2)

plot(f(s1:s2),Im(s1:s2));grid

ylabel('Partea imaginara')

По полученным графикам можно судить не только о частотах и амплитудах, но и фазах отдельных гармоник.

2.4 С помощью программы просмотрите графики сигналов с частотами и частотой дискретизации , а также спектров суммы этих сигналов.

f1 = 100; % frecventa primului semnal

f2 = 4300; % frecventa celui de al doilea semnal

fs = 1000; % frecventa de discretizare a semnalului

Ts = 1/fs;

t = 0:0.1e-4:49e-3; % Diapazonul de timp pentru semnalul continuu

td = 0:Ts:49e-3; % Diapazonul de timp pentru semnalul discret

x1 = 5*cos(2*pi*t*f1-pi/2); % Semnalele continue

x2 = 10*cos(2*pi*t*f2+pi/3);

xd1 = 5*cos(2*pi*td*f1-pi/2); % Semnale discrete

xd2 = 10*cos(2*pi*td*f2+pi/3);

%------ Reprezentarea semnalelor

figure(1); clf;

subplot(211), plot(t,x1); hold on;

stem(td,xd1); grid;

title('Semnalul cu frecventa f1 = 100 Hz (fs = 1000 Hz)');

xlabel('Timpul in secunde'); hold off;

tm = max(t)/10;

p = find(t<=tm);

q = find(td<=tm);

subplot(212), plot(t(p),x2(p)); hold on;

stem(td(q),xd2(q)); grid;

title('Semnalul cu frecventa f2 = 4300 Hz (fs = 1000 Hz)');

xlabel('Timpul in secunde'); hold off;

%------ Reprezentarea FFT (modulul(FFT)/N si unghiul (FFT))

xd = xd1 + xd2;

Xi = fft(xd);

N = length(Xi);

figure(2);

subplot(211), stem((0:N-1)*fs/N, abs(Xi)/N); grid;

title('Spectrul de amplitudine (modului(FFT)/N)');

xlabel('Frecventa in Hz');

phase = angle(Xi);

for m = 1:N

if abs(real(Xi(m)))& abs(imag(Xi(m))) < 1e-9;

phase(m) = 0;

end;

end;

subplot(212), stem((0:N-1)*fs/N, phase); grid;

title('Spectrul de faza (unghiul (FFT))');

xlabel('Frecventa in Hz');

2.5 С помощью программы произвести расчет спектров гармонических сигналов с частотами и , используя интервал наблюдения и частоту дисретизации . Поскольку для первого из сигналов интервал наблюдения содержит нецелое число периодов , наблюдается упомянутый выше эффект "растекания" спектра (leakage effect). Для второго сигнала, у которого , этот эффект отсутствует. Показано также влияние применения весовой функции Хэннинга (Hanning) с целью уменьшения влияния этого эффекта.

f1 = 130; % Frecventa primului semnal

f2 = 200; % Frecventa celui de al doilea semnal

fs = 800; % frecventa de discretizare

Ts = 1/fs;

x1max = 15; % Amplitudinea

x2max = 5;

t = 0:0.1e-4:49e-3; % Diapazonul de timp pentru semnalele continue

td = 0:Ts:49e-3; % Diapazonul de timp pentru semnalele discrete

x1 = x1max*cos(2*pi*t*f1-pi/2); % Semnalele continue

x2 = x2max*cos(2*pi*t*f2+pi/3);

xd1 = x1max*cos(2*pi*td*f1-pi/2); % Semnalele discrete

xd2 = x2max*cos(2*pi*td*f2+pi/3);

%------ Reprezentarea semnalelor

figure(1); clf;

subplot(211), plot(t,x1); hold on;

stem(td,xd1); grid;

title(['Semnalul cu frecventa f1 = ',num2str(f1),' Hz (fs = ',... num2str(fs),' Hz)']);

xlabel('Timpul in secunde'); hold off;

tm = max(t)/1;

p = find(t<=tm);

q = find(td<=tm);

subplot(212), plot(t(p),x2(p)); hold on;

stem(td(q),xd2(q)); grid;

title(['Semnalul cu frecventa f2 = ',num2str(f2),' Hz (fs = ',... num2str(fs),' Hz)']);

xlabel('timpul in secunde'); hold off;

%------ Reprezentarea FFT (modulul(FFT)/N si unghiul(FFT))

Xi1 = fft(xd1);

Xi2 = fft(xd2);

N = length(Xi1);

N_2 = fix(N/2);

figure(2);

subplot(211), stem((0:N_2-1)*fs/N, abs(Xi1(1:N_2)/N));

title(['Spectrul de amplitudine a semnalului xd1 (f1 = ',... num2str(f1), 'Hz)']);

xlabel('Frecventa in Hz');

ylabel('Modulul (DFT/N)');

subplot(212), stem((0:N_2-1)*fs/N, abs(Xi2(1:N_2)/N));

title(['Spectrul de amplitudine a semnalului xd2 (f2 = ',... num2str(f2), 'Hz)']);

xlabel('Frecventa in Hz');

ylabel('Modulul (DFT/N)');

m1 = N*f1/fs;

m2 = N*f2/fs;

in = 0:0.1:N-1;

Xdin1 = zeros(1,length(in));

Xdin2 = zeros(1,length(in));

for l = 1:length(in)

Xdin1(l) = sum(xd1.*exp(-j*2*pi*in(l)*(0:N-1)/N));

Xdin2(l) = sum(xd2.*exp(-j*2*pi*in(l)*(0:N-1)/N));

end;

in1 = find(in <= N_2);

figure(3); clf;

subplot(211), plot(in(in1)*fs/N, abs(Xdin1(in1)/N));

hold on; stem((0:N_2-1)*fs/N, abs(Xi1(1:N_2)/N));

hold off;

title('DFT ca functie continua si discreta');

ylabel('Modulul (DFT/N)');

xlabel(['Frecventa in Hz; (f1 = ',num2str(f1),' Hz; fs = ',... num2str(fs),' Hz; m1 = ',num2str(m1),')']);

subplot(212), plot(in(in1)*fs/N, abs(Xdin2(in1)/N));

hold on; stem((0:N_2-1)*fs/N, abs(Xi2(1:N_2)/N));

hold off;

ylabel('Modulul (DFT/N)');

xlabel(['Frecventa in Hz; (f2 = ',num2str(f2),' Hz; fs = ',... num2str(fs),' Hz; m2 = ',num2str(m2),')']);

w = hanning(N);

w_t = hanning(length(t));

text_1 = 'hanning';

figure(4); clf;

xd1_f = xd1.*w';

subplot(211), stem(td, xd1_f); hold on

plot(t, x1.*w_t');

hold off; grid;

title(['Semnalul xd1 cu efect ',text_1,' (f1 = ',... num2str(f1),' Hz; fs = ',... num2str(fs),' Hz)']);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]