�������������� ������ ����������������� ������ ������� ������� �������� �������� ��������� �������� ���������������� ���� �������� �� ������� ������ ��������� ������ �������������� ������������� ������ ���������������� ����������� ������

������� ������� ������-����������� �����

���������� MATLAB

������ ������� � ���������� ����������

���������� ���������� � ��������� ��������, �. �. ������ � �������� �-�����, ������������� �������� �������. ������� help ���� ������� �����������, ����������� ������ � �������� �������, ����� ��� ������� type name ������� ���� ������� m-�����. ��� ��� �������� � ��������� m-����� ���������� ������ ������������ �� � ��������� ������ ������, �� � ������ �-������. ��� ��������� � ������� ������������� ������� MATLAB ������ ����� ������������� m-���� �� ������� ��������� ����������. ���� ��� ����������, �� �������� ��� ��������� �������. ��������� ���������� �������� ���������� �� ����� ����� ��������� � ������� �������� ������� �������. ���� � ������� � ����������� ������ �������������� ����� ����������, �� ���� �������� ����������� ��� � �������, ��� � � �� �����������.

 

 

�������������� ��������� �������

�������� ���������� ���������� �������� ��������, �������� ���������� ����, ����������� � �� ����� �������. ��� ��������� �� ���� ���������� ������ ������� ������� ������� ����� � ������������� ��������� ��������� �������� � �� ���������. �� ����� ���������� �������� ����������� �������� �������, ����� ����� ������� N ���� ��� ��������������� ���������� ����� ��������� �������� � �����. ��� ������������ ���������� ��������� ��������.

������������ ������ N+1-ro ������� ������ FIR (Finite Impulse Response ��� � �������� ���������� ���������������). ������ �� N ����� ��������� �������� ������� ������������� ��������� ����������� ��������� ������� � �� �������� � ����:

��������� ����� ���������� plots, ������ ��� ����������� ������������ ��������������:

> restart:with(p1ots):

Warning, the name changecoords has been redefined

������� �������� ������ ��� �������������� ���������� ��������� �������, ����������� ����� ��������� �� �������� ������� � ���� ������������ ������� � �������� 500 ��:

> N := 64: # ����� ������ ������� (�� 1 ������ ������� �������)

> fs:= 10000: # ������� �����������

> fl = 2300: # ������ ��������� �������

> fh = 2700: # ������� ��������� �������

> m := 10: # 2^m > N - ����� ����� ��� �������

��������:

 

�������� FIR-������������ ��� �������������� ���� �������:

> � :-=(n) -> limit(g,t=n):h := aray(0..N): N2:=N/2:

> for n from 0 to N2 do h[N2-n]:= evalf(C(n)); h[N2+n] := h[N2-n]; od:

��������� ������� �������� x(n) � ��������� �(n) ��������:

> � := array(-N..T): y := �����(0..�):

��������� �������� �(n) ������ 0 ��� ������� ������ 0 � 1 ��� ������� >=0:

> for n from -N to -1 do x[n] := 0; od:

> for n from 0 to � do x[n] := Dirac(n); od:

�������� ��������� ����������� ��� ��������� �������: 

> for n from 0 to � do y[n] := sum(h[k]*x[n-k],k=0..N): od:

�������� ������ ���������� �������������� �������, ���������� ��� ������� �� ������ ��������� ������� � ���������� ����� �������� ��������:

> � := [seq([j/fs,y[j]],j=0..T)3:

> plot(p, time=0..3*N/fs, labels=[time,output], axes=boxed, xtickmarks=4, title-'���������� �������������� �������',color=black);

�� ������� �� ���. 17.19. �������� ��������, ��� ��� �������������� ��������������� �� �������������� �������, ��������� ��� ������� fl � fh ����������� ��������. � ���� ������ ��������� ������ �� ����� ��������� ������������ � ������������, ���� ���� �� ���� ������� ��������� �� ������������.

���. 17.19. ���������� �������������� ��������� �������

�������� ��� �������, ��������� ������ �������������� �����. ��� ����� ���������� �������������� �������� ����������� �������� FFT:

> r� := array (1..T+1): io := arrayd. .T+l):

> for n from 0 to � do ro[n+l] :- y[n]; io[n+l] := 0; od:

> FFT(m,ro,io):

�������� ������ ��� �������:

> � :=[seq([j*fs/(T+l),abs(ro[j+l]+io[j+l]*I)3,j=O..T/2)]:

> plot(p, frequency=0..fs/2, tabels=[frequency,gain], tit1e='A�X �������',��1��=black);

�� ����������� �� ���. 17.20. �������� ��������, ��� � ������ ��� ������� ���������� ��� ����������� ���� � ��� ����� ��� ������ ����. �� ������ ����� ���������, ��� ������������ ������ fl � fh ����� �������� ��� � �������� ������� �������� � ������� ������� (�������, ��� ����� �������������� ������������ � �������������).

���. 17.20. ��� ��������� ���������� �������

������ ��������� � ������������ �������. ������� ������� ������ � ���� ������������ ������� � �������� 500 �� � �������� ���������� 2 �:

> 1 :=round(fs/2/500):

> for n from 0 by 2*1 to � do

> for n2 from 0 to 1-1 do

> if n+n2 <= � then

> x[n+n2] := evalf(-l+rand()/10^12-0.5);

> fi:

> if n+n2+1 <= � then

> x[n+n2-H] :-=eva1f(l+ranoX)/10^12-0.5);

> fi;

> od:

> od:

��������� ����������� ���������������� �������� ������� ������������ �� ���. 17.21.

���. 17.21. ��������������� ������� ������

�������� ������� ������� �� ������� ������:

> for n from 0 to T do

> y[n] := sum(h[k]*x[n-k],k=0..N);

> od:

�������� ������ ��������� �������:

> � := [seq([j/fs, x[j]], j=0..T)]:q:= [seq([j/fs , y[j]] , j =0..�)]:

> plot(p,time=0..T/fs/4,1abels=[time,volts],title='������� ������\�olor=black);

> plot(q,tine=0..T/fs/4,1abels=[tirae,volts], titl�='�������� ������",color=black);

��������� ����������� ��������� ������� �������� �� ���. 17.22. �������� ��������, ��� � ����� ������ �������� ������ ����������� � ����� ��������� �������� �������, �� ����� ������������ �������� �������� ���������� �������. �� ������ � ��������������� ������� �������.

���. 17.22. ��������� ����������� ��������� ������� ��������� �������

�������� ������� �������� � ��������� ��������, ���������� ������� ������� �������� � �������� ������ �������������� ����� � ������� ������� FFT:

> � := array(l..T+l):1i :=array(1..�+1):

> for n from 0 to T do ,

> ri[n+l] := x[n]*2/T: ii[rn-l] := 0;

> ro[n+l] := y[n]*2/T; Io[rrfl] := 0;

> od:

> FFT(m.ri,ii):rTT(m,ro,io):

�������� ������ ������� �������� �������, ��������� ������� �� ��������� ��������� 0,5 �:

> � := [seq([j*fs/(T+l),abs(n[j+l]+ii[j-H]*I)],j=0..T/2)]:

> q := [seq([j*fs/(T-H),abs(ro[j-H]+To[j+l]*I)],j=0..T/2)]:

> plot(p, frequency=0..fs/2,y0..0.5,labe1s=[������a.V],title='��������� ������ �������� �������',color=black);

���� ������ ����������� �� ���. 17.23. �� ���� ������ �����, ��� ������������ ������ �������� ������� ����������� ������ ��������� �����������, ��������� ������� ������� �� ���� ����� ������ ���������. ����� ��������� �� ������� 2500 �� ��������� ���������� ������ ����������� �������, ������������ ���������� ��������� ������� 2300 � 2700 ��. ������� ����� ������������� ������������ ����� ���� ������� � �������� ������ ������������ �������.

������ �������� ������ ������� ��������� �������:

> p1ot(q, frequency=0..fs/2,y=0..0.5,labe1s=[������a,V], title='��������� ������ ��������� �������'�color=black);

�� ����������� �� ���.17.24. ������ ����� ����������� ��������� ����� ��������� ������� � ����������� � ��� ����� ������ �������� �������.

���. 17.23. ������������� �������� �������

���. 17.24. ������������� ��������� ������� ��������� �������

����������� ������ ���������������, ��� ���������������� ������ ��������� �������� �������� ����������� � ������������ ��������� ��������� ����� ��������� ������������ �������. �� ������ � ������� ������� ��������� ����� ��������� �������������� � ������ ����� �������� ��������.

������, ���������� ������ �������� �������� �������� � ���������