���������� 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. ������������� ��������� ������� ��������� �������
����������� ������ ���������������, ��� ���������������� ������ ��������� �������� �������� ����������� � ������������ ��������� ��������� ����� ��������� ������������ �������. �� ������ � ������� ������� ��������� ����� ��������� �������������� � ������ ����� �������� ��������.