Разделы сайта

Моделирование цифрового фильтра верхних частот

TForm1 = class(TForm)

Button1: TButton;

BitBtn1: TBitBtn;

Label2: TLabel;

SpinEdit3: TSpinEdit;

Label7: TLabel;

Memo2: TMemo;

Label8: TLabel;

Chart1: TChart;

Series1: TLineSeries;

Series2: TLineSeries;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Form1: TForm1;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);a,c:real;: tGen;,j:integer;: Tfilter;,y,y1,h: real;: Comp;:=38;:=StrToInt(SpinEdit3.text);:=tgen.Init1(c,a);:=Tfilter.Init2;.Series[0].Clear;.Series[1].Clear;i:=0 to 200 do begin.Series[0].AddXY(k.getTime(i),k.getValue(i));.Series[1].AddXY(k.getTime(i),F1.getValueP(k.getValue(i)));;i:=1 to 380 do beginx<=k.getValue(i) then:=k.getValue(i);:=f1.getValueP(k.getValue(i));i>20 theny1<=y then:=y;:=20*log10(abs(y1/x));.Lines.Add(FloatToStr(res));;;.UGenerator;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, TeeProcs, TeEngine, Chart, Buttons, StdCtrls,, Spin, Math;

TGen = class (TObject)

Fample: real; {Амплитуда}

FVhod: real; {Частота входного сигнала}

Fdec: real; {Частота дескретизации}

Constructor Init1(aVhod,adec: real);

Function getValue(ax: integer): real;

Function getTime(ax: integer): real;;

TFilter = class (Tobject)

a01, a02, a03, b01, b02: Real;

a11, a12, a13, b11, b12: Real;

a21, a22, a23, b21, b22: Real;,e02,e03,e04,e05,e06,e07,e08,e09,e10,,e12,e13,e14,e15,e16,e17,e18,e19,e20,,e22,e23,e24,e25,e26,e27,x1, x2,y1,y2: real;

Constructor Init2;

Function getValueP(aX: Real) :Real;;TFilter.Init2;

begin

Inherited Create;:=0.562495; a02:=-0.562495; b01:=-0.12499;:=0.47947; a12:=-2*0.47947; a13:=0.47947; b11:=0.378817; b12:=-0.539061;:=0.349231; a22:=-2*0.349231; a23:=0.349231; b21:=0.275919; b22:=-0.121006;:=0;e02:=0;e03:=0;e04:=0;e05:=0;e06:=0;e07:=0;e08:=0;e09:=0;e10:=0;e11:=0;:=0;e13:=0;e14:=0;e15:=0; x1:=0; x2:=0;y1:=0;y2:=0;

end;TGen.Init1(aVhod,adec: real);

begin

inherited Create;

Fample:=1;

Fvhod:=aVhod;

Fdec:=adec;

end;TGen.getValue(aX: Integer): Real;

begin

Result := fAmple * sin(2*Pi * (Fvhod*1000) * getTime(aX));

end;TGen.getTime(aX: Integer): Real;

begin

Result := ax/(fdec*1000);

end;TFilter.getValueP(aX: Real): Real;

begin

x2:=x1;

x1:=ax;

y1:=a01*x1+a02*x2-b01*y1;:=e02;

e06:=e03*a13;

e02:=e01;

e05:=e02*a12;

e01:=y1;

e04:=e01*a11;

e09:=e08;

e11:=e09*b12;

e08:=e07;

e10:=e08*b11;

e07:=e04+e05+e06+e10+e11;:=e09*a23;

e13:=e08*a22;

e12:=e07*a21;

e17:=e16;

e19:=e17*b22;

e16:=e15;

e18:=e15*b21;

e15:=e12+e13+e14+e18+e19;:=e15; ; .

Вывод:

В данной программе был реализован цифровой фильтр верхних частот, в начале временного отчета была произведении задержка на 20 временных единиц, чтобы не попасть в зону переходных процессов, при расчете ослабления.

Перейти на страницу: 1 2 3 4 

Самое читаемое:

Информационно-вычислительная сеть на основе архитектуры клиент-сервер, предметная область Магазин бытовой техники
Компьютерная сеть обозначает наборы связанных между собой автономных компьютеров. Два компьютера называются связанными между собой, если они могут обмениваться информацией. Связь не обязательно должна осуществляться при помощи медного провода. Могут использоваться самые разнообразные средства связи, включая волоконную оптику, ...

www.techstages.ru : Все права защищены! 2025