Deutsch

Мои программы

11.02.25 08:03
Re: Мои программы
 
alek4 старожил
в ответ alek4 31.01.25 14:13

ПРОГРАММА «1-Опознание»


ОГЛАВЛЕНИЕ

1. Исследование опознания

2. Исходные данные

3 Цель программы

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

Приложение 1

Распечатка программы «1-Опознание»

1. Исследование опознания

Исследование опознания можно разделить на три этапа.

Этап 1.

Задаются объекты опознания.

Этап 2

Задаются условия опознания.

Этап 3

Задается алгоритм опознания.

2. Исходные данные.

Пример

Const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окна опознания

y1=1;// координата 1 окна опознания

x2=200;//координата2 окна опознания

y2=200;// координата 2 окна опознания

3. Цель программы

В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.

4. Алгоритм]

4.1.Находятся центры объектов на исходной матрице.

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

4.2. Находятся элементы объектов.

Вероятность элемента объекта определяется расстоянием от центра объекта.

Чем больше расстояние, тем меньше вероятность появления элемента объекта.

Расстояние находится в прямоугольнойметрике.

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

4.3. Вычисляются матрицы

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания

//к сумме элементовобъекта

4.4. Находится максимальный элемент множества u –z1, объект –z2.

Находится максимальный элемент множества u1 –z3, объект –z4.

4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.

Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.

6. Итоги]

Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.

7. Вывод

Выводятся все массивы введенные вышеz1,z2, z3, z4.

7. Скачать программу

https://disk.yandex.ru/d/uqpxmWG8Pj8HLA

]

]

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окнаопзнавания

y1=1;// координата 1 окнаопзнавания

x2=250;//координата2опзнавания

y2=250;// координата 2 окна опзнавания

var

Tick: Cardinal;

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

p:array [1..b] ofcardinal;// сумма элементовдля каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

//к сумме элементовобъекта

i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y:integer;

n1, n2, n3,n4: integer;//

m1,m2,m3,m4,m5: integer;//

f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//

z1,z3,z5,z7 : real;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

doStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

doStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to b//нумерация по горизонтали в табл №1 ,

doStringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

////////////////// Генерация объектов

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

begin

for i:=1 to a do

for j:=1 to a do

if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )

then s[i,j,r] :=r;

end;

end;

fort:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0then

w[3,t] :=w[3,t]+1;

//// Опознавание объъектов

for g:=1 to bdo

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0thenbegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] :=p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100*p /z;

u := 100*p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

ifu > z1 then begin z1:= u; z2:=i;end;

ifu1 > z3 then begin z3:= u1; z4:=i;end;

end;

//Опознание центров z6 и z8в окне опознанпия

for i:=1 to b do

begin

if i<>z2 then ifu > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then ifu1 > z7 then begin z7:= u1; z8:=i;end;

end;

////Вывод

for i:=1 to bdobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to ado

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

fori:=1 to b dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:=FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:=FormatFloat('0.00',u1);

end;

Edit1.Text :='w[1,1]=' +''+ IntToStr(w[1,1])

+''+ 'w[2,1]=' +''+ IntToStr(w[2,1])

+''+ 'n1=' +''+ IntToStr(n1)+''+ 'n2=' +''+ IntToStr(n2)

+''+ 'z=' +''+ IntToStr(z)

+''+ 'z1=' +''+ FormatFloat('0.00',z1) +''+ 'z2=' +''+ IntToStr(z2)

+''+ 'z3=' +''+ FormatFloat('0.00',z3) +''+ 'z4=' +''+ IntToStr(z4)

+''+ 'z5=' +''+ FormatFloat('0.00',z5) +''+ 'z6=' +''+ IntToStr(z6)

+''+ 'z7=' +''+ FormatFloat('0.00',z7) +''+ 'z8=' +''+ IntToStr(z8);

Form1.Caption:=IntToStr(GetTickCount-Tick);

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

ПРОГРАММА «1-Опознание»

]

ОГЛАВЛЕНИЕ]

1. Исследование опознания

2. Исходные данные

3 Цель программы

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

Приложение 1

Распечатка программы «1-Опознание»

1. Исследование опознания

Исследование опознания можно разделить на три этапа.

Этап 1.

Задаются объекты опознания.

Этап 2

Задаются условия опознания.

Этап 3

Задается алгоритм опознания.

2. Исходные данные.

Пример

Const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1; //координата 1 окна опознания

y1=1; // координата 1 окна опознания

x2=200; //координата 2 окна опознания

y2=200; // координата 2 окна опознания

3. Цель программы

В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.

4. Алгоритм]

4.1. Находятся центры объектов на исходной матрице.

w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов

// объектов опознания

4.2. Находятся элементы объектов.

Вероятность элемента объекта определяется расстоянием от центра объекта.

Чем больше расстояние, тем меньше вероятность появления элемента объекта.

Расстояние находится в прямоугольной метрике.

s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов

//объектов на матрице

4.3. Вычисляются матрицы

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания

//к сумме элементов объекта

4.4. Находится максимальный элемент множества u –z1, объект –z2.

Находится максимальный элемент множества u1 –z3, объект –z4.

4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.

Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.

6. Итоги]

Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.

7. Вывод

Выводятся все массивы введенные выше z1, z2, z3, z4.

7. Скачать программу

https://disk.yandex.ru/d/uqpxmWG8Pj8HLA

]

]

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1; //координата 1 окна опзнавания

y1=1; // координата 1 окна опзнавания

x2=250; //координата 2 опзнавания

y2=250; // координата 2 окна опзнавания

var

Tick: Cardinal;

w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов

//объектов на матрице

p: array [1..b] of cardinal;// сумма элементов для каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

//к сумме элементов объекта

i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y: integer;

n1, n2, n3,n4 : integer;//

m1,m2,m3,m4,m5: integer;//

f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//

z1,z3,z5,z7 : real;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5 // нумерация по вертикали в табл №1 ,

do StringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a // нумерация по вертикали в табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10 // нумерация по вертикали в табл №1 ,

do StringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to b//нумерация по горизонтали в табл №1 ,

do StringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

////////////////// Генерация объектов

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

begin

for i:=1 to a do

for j:=1 to a do

if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )

then s[i,j,r] :=r;

end;

end;

for t:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0 then

w[3,t] := w[3,t]+1;

//// Опознавание объъектов

for g:=1 to b do

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0 then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] := p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100* p /z;

u := 100* p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4 в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if u > z1 then begin z1:= u; z2:=i;end;

if u1 > z3 then begin z3:= u1; z4:=i;end;

end;

// Опознание центров z6 и z8 в окне опознанпия

for i:=1 to b do

begin

if i<>z2 then if u > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then if u1 > z7 then begin z7:= u1; z8:=i;end;

end;

////Вывод

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to a do

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:= FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:= FormatFloat('0.00',u1);

end;

Edit1.Text :='w[1,1]=' +' '+ IntToStr(w[1,1])

+' '+ 'w[2,1]=' +' '+ IntToStr(w[2,1])

+' '+ 'n1=' +' '+ IntToStr(n1) +' '+ 'n2=' +' '+ IntToStr(n2)

+' '+ 'z=' +' '+ IntToStr(z)

+' '+ 'z1=' +' '+ FormatFloat('0.00',z1) +' '+ 'z2=' +' '+ IntToStr(z2)

+' '+ 'z3=' +' '+ FormatFloat('0.00',z3) +' '+ 'z4=' +' '+ IntToStr(z4)

+' '+ 'z5=' +' '+ FormatFloat('0.00',z5) +' '+ 'z6=' +' '+ IntToStr(z6)

+' '+ 'z7=' +' '+ FormatFloat('0.00',z7) +' '+ 'z8=' +' '+ IntToStr(z8);

Form1.Caption:=IntToStr(GetTickCount-Tick);

end;

///////// ///////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

 

Перейти на