public void Dodaj(float[] tb, T Wartość) { for (int i = 0; i < pr.Length; i++) { pr[i].Ucz(Wartość, NaTabliceFloat.PobierzMapeZKodu(tb, i)); } }
public ObrazDoPorównywania(string NazwaPliku, float Skaler) { Bitmap b = new Bitmap(NazwaPliku); Rozmiar = b.Size; ip = Marshal.AllocHGlobal(b.Width * b.Height); bool *WObraz = (bool *)ip; Obraz = WObraz; for (int i = 0; i < b.Height; i++) { for (int j = 0; j < b.Width; j++, WObraz++) { Color ck = b.GetPixel(j, i); int cint = ck.R + ck.B + ck.G; if (cint == 765) { *WObraz = true; } else { *WObraz = false; } } } tabela = NaTabliceFloat.TablicaWartości(new Rectangle(Point.Empty, b.Size), b.Width, Obraz, new Size(8, 8), Skaler); }
private void button5_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { ObrazDoPorównywania op = new ObrazDoPorównywania(openFileDialog1.FileName, 1); float[][] tb = new float[8][]; tb[0] = op.NaJedenWymiarfloat; NaTabliceFloat.PobierzMapy(tb); TymczasoweSkrypty.ZapiszMapy(tb, 8); } }
public void Ucz(T Typ, float[] Dana) { Element e = DzienikObiektów[Typ]; var a = e.ZnajdźNajbliszy(Dana); NaTabliceFloat.Ucz(a.Mapa, Dana, WspółczynikUczenia); if (a.Index > 0) { NaTabliceFloat.Ucz(e.Mapy[a.Index - 1], Dana, WspółczynikUczenia * WspółczynikUczeniaSąsiada); } if (a.Index < e.Mapy.Length - 1) { NaTabliceFloat.Ucz(e.Mapy[a.Index + 1], Dana, WspółczynikUczenia * WspółczynikUczeniaSąsiada); } }
public float SprawdźNajbliszy(float[] tb, out T Najbliszy) { float Odalenie = float.MaxValue; Najbliszy = default(T); foreach (var item in ParyPodobieństw) { float Delta = NaTabliceFloat.ZnajdźRóżnice(tb, item.Tabela); if (Odalenie > Delta) { Najbliszy = item.Klucz; Odalenie = Delta; } } return(Odalenie); }
public MiejsceIOdległość ZnajdźNajbliszy(float[] Dane) { float Odległość = float.MaxValue; MiejsceIOdległość mio = new MiejsceIOdległość(); mio.E = this; for (int i = 0; i < Mapy.Length; i++) { float Delta = NaTabliceFloat.ZnajdźRóżnice(Mapy[i], Dane); if (Delta < Odległość) { Odległość = Delta; mio.Index = i; mio.Mapa = Mapy[i]; } } mio.Odległość = Odległość; return(mio); }
public float SprawdźNajbliszy(float[] tb, out T Najbliszy, out float[] Zw) { SortedList <float, MiejsceIOdległość> ms = new SortedList <float, MiejsceIOdległość>(); Zw = new float[DzienikObiektów.Count]; int NrPrzeglądanego = 0; foreach (var item in DzienikObiektów.Values) { var tmp = item.ZnajdźNajbliszy(tb); Zw[NrPrzeglądanego++] = tmp.Odległość; try { ms.Add(tmp.Odległość, tmp); } catch { } if (ms.Count > IlośćPorównywanychPrzedZwróceniem) { ms.RemoveAt(ms.Count - 1); } } KeyValuePair <float, MiejsceIOdległość> zw = ms.First(); if (IlośćPorównywanychPrzedZwróceniem > 1) { foreach (var item in ms) { if (NaTabliceFloat.PorównajMiedzyWzorcami(zw.Value.Mapa, item.Value.Mapa, tb) * WspółczynikRóżnicujący + zw.Key - item.Key > 0) { zw = item; } } } Najbliszy = zw.Value.E.Wartość; return(zw.Key); }
public T SprawdźStrony(float[] Dane, float[] TabelaStron, out int WKierunku) { float[][] x = new float[8][]; x[0] = Dane; NaTabliceFloat.PobierzMapy(x); T Zw = default(T); float WartośćNajblisza = float.MaxValue; WKierunku = -1; for (int i = 0; i < GTest; i++) { float Odległość = float.MaxValue; T wartość; Odległość = pr[i].SprawdźNajbliszy(Dane, out wartość); TabelaStron[i] += Odległość; if (Odległość < WartośćNajblisza) { WartośćNajblisza = Odległość; Zw = wartość; WKierunku = i; } } return(Zw); }