Deutsch

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

17.02.25 00:54
Re: Мои программы
 
alek4 старожил
в ответ alek4 31.01.25 14:13

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

]

ОГЛАВЛЕНИЕ

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

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

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

4. Алгоритм

5.Вывод

6. Итоги

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

]Приложение 1

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

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

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

Этап 1.

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

Этап 2

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

Этап 3

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

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

Пример

Const

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

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

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

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

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

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

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

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

h=5;//суперцикл

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

Программа ««2-Опознание» развитие программы«1-Опознание».

По программе«1-Опознание» в процессе опознания определяется центры объектов в окне опознания.

По программе «2-Опознание»собирается статистика нахождения, хотя бы одного центра объекта

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

4. Алгоритм

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

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

// объектов опознания, 3 – число элементов объекта опознания

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.

4.6. Расчёты по 4.1 – 4.5 проводятся h раз – суперцикл.

Вычисляются:

Z9 – число нахождений, хотя бы одного центра объекта

в окне опознания за суперцикл.

n – частное от деления z9 на h.

Массив u2[1..h] – элемент u2 равен 1, при нахождения на шаге i суперцикла, хотя бы одного центра объекта в окне опознания, и -0 в противном случае.

6. Итоги

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

Можно выявить соответствие размера окна опознания и z10.

7. Вывод

Выводятся все массивы введенные вышеи z1, z2, z3, z4, z5, z6, z7, z8, z9, z10.

Массив s[1..a,1..a,1..b] выводится при значениях s[1..a,1..a,z4] и s[1..a,1..a,z8].

Элемент матрицы s[1..a,1..a,z4] * s[1..a,1..a,z8]

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

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

Приложение 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;

Edit2: TEdit;

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=150;//координата2опознания

y2=150;// координата 2 окна

h=5;//суперцикл

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;//частное сумме элементов объекта в окне опознания

u2: array [1..h] of cardinal;//1 центр объекта в окне опознания, 0 - вне окна

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

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

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

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

z1,z3,z5,z7 : real;

n: variant;

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 500//нумерация по горизонтали в табл №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[ ]';

StringGrid3.Cells[0,4] := 'u2[ ]';

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

forf:=1 to h do//Суперрцикл

begin //f

for i:=1 to b do

begin

p :=0;

u :=0;

u1 := 0;

end;

for i:=1 to 3 do

for j:=1 to b do

w[i,j] :=0;

for i1:=1 to a do

for i2:=1 to a do

for i3:=1 to b do

s[i1,i2,i3] :=0;

z1:=0; z2:=0; z3:=0; z4:=0;

z5:=0; z6:=0; z7:=0; z8:=0;

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;

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;

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

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

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;

if ( ((w[1,z4]>=x1) and(w[1,z4]<=x2)) and

((w[2,z4]>=y1) and(w[2,z4]<=y2)) )

thenbegin z9 := z9+1; u2[f] :=1;end;

end;//f

N:= z9/h;

////Вывод

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;

fori3:=1 to h dobegin

StringGrid3.Cells[i3,4]:=IntToStr(u2[i3])

end;

Edit1.Text :=

'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);

Edit2.Text :=

'z9=' +''+ IntToStr(z9)

+''+ 'n=' +''+ FormatFloat('0.00',n)

+''+ 'n=' +''+'u2[h]=' +''+ IntToStr(u2[h])

end;

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

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

 

Перейти на