DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Обробка результатів вимірювань

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Моделювання

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 4 з курсу „ Моделювання ” Тема: Обробка результатів вимірювань за допомогою методів регуляризації. Львів – 2005 Мета роботи: Відновити форму вхідного сигналу за його виміряними дискретними значеннями, отриманими на виході лінійної системи. Завдання до роботи: Знайти часову залежність для вхідного сигналу , якщо відомо, що графік сигналу із виходу аналого-цифрового перетворювача має наступний вигляд:  Файл експериментальних даних знаходиться в таблиці. Кожен рядок файлу вимірювань складається із 2 числових значень – значення часу і відповідне йому значення напруги, виміряне за допомогою аналого-цифрового перетворювача. Як видно із графіка, сигнал дещо спотворений шумами вхідного підсилювача і перетворювача. В якості регуляризуючого функціоналу можна взяти наступні функції: а)  б)  За комплексний частотний коефіцієнт передачі підсилювача взяти наступне співвідношення:   Дана характеристика відповідає підсилювачу, який має лише один полюс частотної характеристики. Реальні підсилювачі, як правило, описуються значно складнішими співвідношеннями. При виконанні роботи необхідно визначити оптимальні значення параметрів регуляризації , враховуючи, що в вхідний сигнал підсилювача складається із суми прямокутних імпульсів. При застосуванні регуляризуючої функції типу 2б необхідно обчислити числові значення інтегралу нев’язки за наступними співвідношенням:   Для обчислення інтегралу можна скористатись формулами прямокутників або трапецій. Як приклад, наведемо залежність значень вхідного сигналу від часу без використання методів регуляризації (шляхом прямого застосування формули (4)) та відповідну залежність, знайдену із використанням регуляризуючого множника. Текст програмної реалізації unit Main; interface uses Math,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart; type TForm1 = class(TForm) BitBtn1: TBitBtn; Image1: TImage; BitBtn2: TBitBtn; Memo1: TMemo; Button1: TButton; Edit1: TEdit; Image2: TImage; Label1: TLabel; Label2: TLabel; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const Np=76; type ArrMatr=array[1..Np,1..Np] of Extended; var Form1: TForm1; VAH:array[1..2,1..Np] of Double=( {Ud,V}(1.0E-03,0.10101,0.20202,0.30303,0.40404,0.50505,0.60606,0.70707,0.80808,0.90909,1.0101,1.11111,1.21212,1.31313,1.41414,1.51515,1.61616,1.71717,1.81818,1.91919,2.0202,2.12121,2.22222,2.32323,2.42424,2.52525,2.62626,2.72727,2.82828,2.92929,3.0303,3.13131,3.23232,3.33333,3.43434,3.53535,3.63636,3.73737,3.83838,3.93939,4.0404,4.14141,4.24242,4.34343,4.44445,4.54545,4.64647,4.74747,4.84849,4.94949,5.05051,5.15151,5.25253,5.35353,5.45455,5.55556,5.65657,5.75758,5.85859,5.95960,6.06061,6.16162,6.26263,6.36364,6.46465,6.56566,6.66667,6.76768,6.86869,6.96970,7.07071,7.17172,7.27273,7.37374,7.47475,7.57576), {Id,A}(7.45457E-6,2.43832E-4,4.68852E-4,6.84301E-4,8.77114E-4,0.00108,0.00126,0.00144,0.0016,0.00176,0.0019,0.00204,0.00217,0.00228,0.00239,0.00249,0.00259,0.00267,0.00274,0.0028,0.00284,0.00289,0.00292,0.00295,0.00297,0.00298,0.00298,0.00297,0.00295,0.00292,0.00289,0.00284,0.00279,0.00273,0.00267,0.0026,0.00251,0.00243,0.00235,0.00225,0.00216,0.00207,0.00197,0.00187,0.00178,0.00167,0.00158,0.00149,0.00139,0.0013,0.00121,0.00112,0.00103,9.40321E-4,8.66034E-4,7.89536E-4,7.16527E-4,6.44088E-4,5.70496E-4,5.04513E-4,4.40479E-4,3.77542E-4,3.20819E-4,2.66671E-4,2.18542E-4,1.74533E-4,1.33869E-4,1.00213E-4,7.03066E-5,4.73798E-5,2.93464E-5,1.61997E-5,7.90947E-6,2.0467E-6,1.00E-09,1.00E-10)); (*VAH:array[1..2,1..Np] of Double=((1,2,3,4,5,6,7) ,(0.00087,0.00100,0.002,0.00290,0.00230,0.001,0.00050));*) B:ArrMatr; Y:array[1..Np] of Extended; A:array[1..Np] of Extended; L:ArrMatr; Z:array[1..Np] of Extended; Ub:Double; implementation procedure LUDecomposition(var A : ArrMatr; N : Integer; var L : ArrMatr);forward; {procedure LUDecomposition(var A : ArrMatr; N : Integer; var L : ArrMatr); var i : Integer; j : Integer; k : Integer; begin i:=1; while i<=n-1 do begin j:=i+1; while j<=n do begin A[j,i] := A[j,i]/A[i,i]; Inc(j); end; j:=i+1; while j<=n do begin k:=i+1; while k<=n do begin A[j,k] := A[j,k]-A[j,i]*A[i,k]; Inc(k); end; Inc(j); end; Inc(i); end; I:=1; while I<=N do begin L[I,I] := 1; J:=1; while J<=I-1 do begin L[I,J] := A[I,J]; A[I,J] := 0; Inc(J); end; J:=I+1; while J<=N do begin L[I,J] := 0; Inc(J); end; Inc(I); end; end; } procedure LUDecomposition(var A: ArrMatr; N : Integer; var L : ArrMatr); var i : Integer; j : Integer; k : Integer; q:Integer; sum:Double; begin for q:=1 to N-1 do begin i:=q; for j:=i+1 to N do begin sum:=0; for k:=1 to i-1 do sum:=sum+a[i,k]*a[k,j]; a[i,j]:=(a[i,j]-sum)/a[i,i]; end; j:=q+1; for i:=j to N do begin sum:=0; for k:=1 to j-1 do sum:=sum+a[i,k]*a[k,j]; a[i,j]:=a[i,j]-sum; end; end; for i:=1 to N do for j:=1 to N do begin L[i,j]:=a[i,j]; if j>i then L[i,j]:=0; end; for i:=1 to N do for j:=1 to N do begin if j=i then a[i,j]:=1; if j<i then a[i,j]:=0; end; end; {function power(Base, Exponent: Extended): Extended; var ex: extended; begin power := 0; if (exponent <> 0) and (frac(trunc((1 / exponent) * 1000000) / 1000000) = 0) and (base < 0) then begin if round(1 / exponent) mod 2 = 0 then exit; ex := Exp(Exponent * Ln(-Base)); power := -ex; end else begin if Exponent = 0.0 then power := 1.0 else if (Base = 0.0) and (Exponent > 0.0) then power := 0.0 else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then power := IntPower(Base, Integer(Trunc(Exponent))) else power := Exp(Exponent * Ln(Base)) end; end;} function myfun(x:double;num:Integer):double; var i:Integer; tmp:double; begin tmp:=0; for i:=1 to num do tmp:=tmp+A[i]*power(x,i-1); myfun:=tmp; end; procedure TForm1.BitBtn1Click(Sender: TObject); var x,y,i:Integer; begin Image1.Canvas.MoveTo(0,300); Image1.Canvas.Pen.Width:=2; for i:=1 to Np do begin x:=round(VAH[1,i]*100); y:=300-round(VAH[2,i]*1e5); Image1.Canvas.Pixels[x,y]:=clRed; Image1.Canvas.LineTo(x,y); Image1.Canvas.Pixels[x,y]:=clRed; end; Image1.Canvas.Pen.Color:=clRed; Image1.Canvas.Pen.Width:=2; Image1.Canvas.MoveTo(0,300); for i:=1 to Np do begin x:=round(VAH[1,i]*100); y:=300-round(myfun(VAH[1,i],Np)*1e5); Image1.Canvas.Pixels[x,y]:=clRed; Image1.Canvas.LineTo(x,y); Image1.Canvas.Pixels[x,y]:=clRed; end; end; procedure TForm1.BitBtn2Click(Sender: TObject); var i,j,ll,m:Integer; Ib:Double; num:Integer; str:String; begin Ib:=VAH[2,1]; num:=1; for i:=1 to Np do if (Ib<VAH[2,i]) then begin Ib:=VAH[2,i]; num:=i; end; Ub:=VAH[1,num]; for ll:=1 to Np do for m:=1 to Np do begin B[ll,m]:=0; Y[ll]:=0; for j:=1 to Np do begin B[ll,m]:=B[ll,m]+power(VAH[1,j]{-Ub},ll+m-2); //exp((l+m-2)*ln(VAH[1,j]-Ub)); Y[ll]:=Y[ll]+power(VAH[1,j]{-Ub},ll-1)*VAH[2,j]; //exp((l-1)*ln(VAH[1,j]-Ub))*VAH[1,j]; end; end; { B[1,1]:=2; B[1,2]:=4; B[1,3]:=-4; B[1,4]:=6; B[2,1]:=1; B[2,2]:=4; B[2,3]:=2; B[2,4]:=1; B[3,1]:=3; B[3,2]:=8; B[3,3]:=1; B[3,4]:=1; B[4,1]:=2; B[4,2]:=5; B[4,3]:=0; B[4,4]:=5;} LUDecomposition(B,Np,L); Z[1]:=Y[1]/L[1,1]; for i:=2 to Np do begin Z[i]:=0; for j:=1 to i-1 do Z[i]:=Z[i]+L[i,j]*Z[j]; Z[i]:=(Y[i]-Z[i])/L[i,i]; end; A[Np]:=Z[Np]; for i:=Np-1 downto 1 do begin A[i]:=0; for j:=i+1 to Np do A[i]:=A[i]+B[i,j]*A[j]; A[i]:=Z[i]-A[i]; end; str:=''; for i:=1 to Np do begin Memo1.Lines.Add(FloatToStr(A[i])); str:=str+'+('+FloatToStrF(A[i],ffFixed,10,5)+'*(x^'+IntToStr(i-1)+'))'; end; while Pos(',', str) > 0 do str[Pos(',', str)] := '.'; Edit1.Text:=str; end; procedure TForm1.Button1Click(Sender: TObject); const L = 10e-3; //10mH R = 5e+3; // 5k C = 1e-6; //1mkF V = 4.8; var i,j:Integer; tmp:double; T,ht,h,U,I1:double; begin T:=2*pi*sqrt(L*C); ht:=T/100; U:=V; h:=ht; Image1.Canvas.MoveTo(0,300); Image1.Canvas.Pen.Width:=2; {for i:=1 to 100 do begin I1:=I1+(h/L)*U; U:=U+(h/c)*(myfun(U,Np)-I1-U/R); Image1.Canvas.LineTo(round(h*10),300-round(U*50)); h:=h+ht; end; } t:=0; Image2.Canvas.MoveTo(0,85); for i:=1 to 500 do begin Image2.Canvas.LineTo(round(t*10),85-round(U*50)); t:=t+0.1; end; end; end. Приклад виконання програми  Висновок. На даній лабораторній роботі я відновив форму вхідного сигналу за його виміряними дискретними значеннями, отриманими на виході лінійної системи.
Антиботан аватар за замовчуванням

13.02.2013 14:15

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!