Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von NeuroCoder
Thema: Domain und ggf. Webspace Anbieter - Empfehlungen
Am im Forum: Smalltalk

Hallo,

ich betreibe bei http://www.netcup.de einen V-Server. Guter Support und gute Preise. Definitiv weiterzuempfehlen.

Webhosting Pakete gibts dort auch (geeignet z.B. für eine Wordpress Installation).

Viele Grüße,
NeuroCoder

Thema: Wie wahrscheinlich ist, dass ein Stimmergebnis einer Zufallsstichprobe von der Gesamtheit abweicht?
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ein statistischer Test scheint mir hier die passende Methode zu sein.
Wenn ich das Problem richtig verstanden habe, geht es um Folgendes Problem:
Jede Person kann sich zwischen A und B entscheiden. Dies definiert eine Zufallsvariable X:

X: Omega -> {A,B}
Angenommen, die Mehrheit stimmt für A. Dann ist X Bernoulli-verteilt mit
P( X = A ) = p > 1  / 2   und    P(X = B ) = 1 - p.

Jetzt werden n Realisierungen von X beobachtet (also n Personen befragt). Es ergibt sich die (Null-)Hypothese, ob p ≤ 1 / 2. Die Gegenhypothese, welche statistisch gesichert wird (Signifikanzniveau alpha), lautet demnach p > 1 / 2.
Lehnt der Test ab, so ist die Wahrscheinlichkeit sich falsch zu entscheiden (also fälschlicherweise für die Gegenhypothese der absoluten Mehrheit zu entscheiden) höchstens alpha. Der Test lehnt dabei die Nullhypothese ab, wenn der p-Wert unter das Signifikanzniveau alpha fällt.

Der passende Test für dieses Modell wäre ein Binomialtest.

Der p-Wert ist aber NICHT die Wahrscheinlichkeit dafür, dass die Null-Hypothese wahr ist. Ebenso lassen sich generell keine Wahrscheinlichkeiten an Hypothesen heften, sondern nur an die (Fehl-)Entscheidung für eine Hypothese.
Ich glaube daher, dass sich herbivores Frage höchstens näherungsweise beantworten lässt, wenn man z.B. den p-Wert trotzdem auf diese Weise interpretiert - auch wenn es falsch ist.

Viele Grüße,
NeuroCoder

Thema: Zusammenfassen mehrerer Werte in einem Intervall
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo ck123,

wenn du deinen Polygonzug vereinfachen willst, klingt das nach Douglas-Peucker:
Douglas-Peucker-Algorithmus
Polyline Simplification

Andererseits schlägst du mit deinem Histogramm-Ansatz einen Dichteschätzer vor.
Wenn du deine Messwerte auch noch glätten willst (Messrauschen verringern) könntest du Kerndichteschätzer, Glättungssplines, Moving Least Squares, Wavelets etc. einsetzen.

Viele Grüße,
NeuroCoder

Thema: Mit C# auf MAT (MatLab) Dateien zugreifen (Lesen/Ändern/Schreiben)
Am im Forum: Rund um die Programmierung

Hallo ReneS,

auf dem Matlab File Exchange habe ich diese Submission gefunden:
CSMatIO: MAT-file I/O API for .NET 2.0

Alternativ kannst du auch mit der Spezifikation des Dateiformats deine eigenen Klassen schreiben:
MAT File Format (PDF)
Die Spezifikation reicht aber nur bis Version 5, soweit ich gesehen habe (es müsste bereits Version 7 geben).

Mfg NeuroCoder

Thema: Konzept für Kalibrierung: Messwerte für Musterteil anhand der bekannten Werte korrigieren
Am im Forum: Rund um die Programmierung

Hallo Oliver!

A) Ich kenne deinen Hintergrund nicht. Abhängig davon könntest du z.B. in
Engel: Anwendungsorientierte Mathematik: Von Daten zur Funktion
oder
Fahrmeir, Kneib, Lang: Regression
schauen.

Das Erste ist ein Buch für Mathematik Lehramt und das Zweite ein "normales" Fachbuch. Falls du Zugriff auf SpringerLink hast, findest du beide Bücher dort.
Die meisten Statistik-Bücher behandeln aber auch gewöhnliche Regression.

B) In den Büchern steht beschrieben, was es auszurechnen gilt:
Im einfachsten Fall sowas wie (X^T * X)^(-1) * X^T * Y, wobei X die Design-Matrix und Y der Datenvektor ist.
Das musst du dann nur in deinem Programm umsetzen. Mit entsprechenden Mathe-Libraries ist das (fast) nur Formel abtippen. Oder du suchst dir direkt eine Library, die die Regression für dich übernimmt.

Für geeignete Libraries: Im Forum und mit Suchmaschine suchen.

Viele Grüße,
NeuroCoder

Thema: Konzept für Kalibrierung: Messwerte für Musterteil anhand der bekannten Werte korrigieren
Am im Forum: Rund um die Programmierung

Hallo Oliver,

was für ein Ansatz geeignet sein könnte, kannst du z.B. in Plots des Fehlers e erahnen.
Zunächst würde ich (falls möglich) eine gleichverteilte Punktmenge einmessen und so die g-Werte besorgen (z.B. Punkte auf einem Gitter). Es empfiehlt sich oft dort noch genauer aufzulösen, wo "viel passiert".

Wenn du dann einen Ansatz ausgewählt hast (z.B. ein polynomieller bis zu einem gewissen Grad) kannst du die Regression mit den e-Werten an den gemessenen Punkten (x,y) durchführen.
Hier würde sich gewichtete Regression anbieten, denn du hast auch die Fehler deiner Messungen (nehm ich an).

Du bekommst dann eine geschätzte Funktion e(x,y) deren Schätzung ebenfalls fehlerbehaftet ist (siehe Verteilung des Regressionsschätzers).
Die Fehler der Schätzung müssen dann bei der kalibrierten Messung mit in die normalen Messfehler einbezogen werden.

Wenn du nun wissen willst, wie man eine Regression durchführt, dann verweise ich dich an dieser Stelle auf einschlägige Literatur bzw. Statistik-Bücher.

Im Wesentlichen geht es darum ein Norm-Minimierungsproblem zu lösen:

min || e(x,y) - X*Beta||^2
wobei Beta der Regressions-Schätzer ist und X deine Design-Matrix mit den Datenpunkten. Hierbei wird das Modell
Y = X * Beta + Epsilon
unterstellt, bei dem Epsilon die Fehler sind (Erwartungswert = 0) und Y der Datenvektor mit den e-Werten. Ein derartiges Modell kannst du z.B. bei polynomieller Regression erreichen, wenn du X entsprechend wählst.

Mehr dazu aber in der Fachliteratur, im Detail erklären werde ich dir die Regression nämlich nicht. Wenn du dich eingelesen hast und dann noch Fragen auftauchen, gucke ich gerne nochmal drauf.

EDIT: Übrigens könnten sich auch ganz andere Verfahren als polynomielle Regression für deine Problemstellung eignen: Zum Beispiel (Glättungs-)Splines oder nichtparametrische Methoden (Kernel-Regression, Kriging u.a.).
Welche Methode geeignet ist, kannst aber nur du entscheiden.

Außerdem drängt sich mir die Frage auf: Wenn du doch für jeden beliebigen Punkt Soll-Werte hast oder errechnen kannst, warum brauchst du das alles dann?

Viele Grüße,
NeuroCoder

Thema: Konzept für Kalibrierung: Messwerte für Musterteil anhand der bekannten Werte korrigieren
Am im Forum: Rund um die Programmierung

Hallo Oliver,

mit deiner Beschreibung kann ich immer noch nichts anfangen. Ich versuche mich mal an einer Interpretation.

Du hast ein Modell:

f: R^2 -> R
Das repräsentiert deine Sollwerte. Zu jedem Koordinatenpunkt (x,y) gibts einen Wert.

Dann hast du die Realität, also deine Apparatur / Versuchsaufbau, die dir Daten liefert:
g: R^2 -> R

Im besten Fall würde g = f gelten (Realität = Modell). Da du aber von Kalibrierung sprichst, wird das nicht der Fall sein.

Du suchst also eine Approximation des Fehlers e(x,y) = f(x,y) - g(x,y), damit du bei gemessenen g-Werten auf die korrekten f-Werte schließen kannst durch f(x,y) = g(x,y) + e(x,y), also Messung + Korrektur.

Wenn das der Fall ist, dann willst du eigentlich eine Approximation von e(x,y) machen. Wenn du nun einen polynomiellen Ansatz für e machst und auch noch Messunsicherheit (die du ja kennen solltest?) dazu nimmst, kommst du zur Polynom-Regression.

Stimmt meine Interpretation?

Viele Grüße,
NeuroCoder

Thema: Konzept für Kalibrierung: Messwerte für Musterteil anhand der bekannten Werte korrigieren
Am im Forum: Rund um die Programmierung

Hallo Oliver,

was weißt oder vermutest du denn über den Zusammenhang deiner Punkte?
Handelt es sich um einen linearen, nach Transformation linearen oder nichtlinearen Zusammenhang? Weißt du das überhaupt oder möchtest du das (explorativ) feststellen?

Erst wenn du diese Fragen beantwortet hast, kannst du ein Modell (das ist eben jener Zusammenhang) aufstellen und dann Regression betreiben.

Was meinst du mit 4. Ordnung? Polynomielle Regression bis zum Grad 4?

Viele Grüße,
NeuroCoder

Thema: MATLAB Funktion umsetzen in C#: Bedeutung von Punkt und Doppelpunkt in MATLAB-Ausdrücken
Am im Forum: Rund um die Programmierung

Hallo dr4g0n76,

die "bepunkteten" Operatoren bedeuten elementweise:

rand(2) .* rand(2)
multipliziert z.B. die beiden Zufallsmatrizen elementweise.

Der Doppelpunkt indiziert alle Indizes in dieser Dimension:
A = [1, 2, 3; 4, 5,6];
A(:, 2)  % Liefert die 2. Spalte (alle Zeilen)
A(1,:) % Liefert die 1. Zeile (alle Spalten)
A(:) % Liefert die Matrix als Vektor (alle Spalten aneinander hängen)
A(:,:) % Liefert die Matrix selbst

Ich nehme an, dass col_img(:,:, k) eine Matrix liefert (Pixel des Bildes) und k den Farbkanal angibt.

In Zeile 0047 werden die Matrizen elementweise zu einer Matrix in der Größe des Bildes addiert.

Viele Grüße,
NeuroCoder

Thema: Events einer intern verwendeten Klasse über die Vewendungsklasse anbieten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo DerPapenberg,

suchst du vielleicht sowas:


internal class Helper
{
	public event EventDelegate MyEvent;
}

public class MainClass
{
	private Helper _helper;
	
	public event EventDelegate MyEvent
	{
		add { _helper.MyEvent += value; }
		remove { _helper.MyEvent -= value; }
	}
}

Mfg NeuroCoder

Thema: Mapping-Schicht für XML
Am im Forum: Datentechnologien

Hallo ProgrammierTroll,

vielleicht ist auch das XMLRepository-Projekt von Golo Roden und Peter Bucher was für dich:
http://www.xmlrepository.ch/

Mfg NeuroCoder

Thema: Dateiname aus Pfad filtern
Am im Forum: Rund um die Programmierung

Hallo simplex,

du suchst Path.GetFileName():
Path.GetFileName-Methode

Mfg NeuroCoder

Thema: new Random().Next() liefert 100-1000mal hintereinander dieselbe Zufallszahl
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Axxus,

alternativ zu den Pseudo-RNGs aus dem Framework kannst du deine Simulation auch mit echten Zufallszahlen laufen lassen, die du z.B. von random.org beziehen kannst.

Dazu siehe:

  1. http://www.random.org/clients/http/
  2. http://www.random.org/clients/http/archive/


Normalerweise sollte aber auch die Qualität der Pseudo-RNGs ausreichen, wenn du sie denn richtig benutzt (siehe meine beiden Vorposter).

Mfg NeuroCoder

Thema: "Baukastensystem"-Oberfläche programmieren
Am im Forum: GUI: Windows-Forms

Hallo Gruwe,

du kannst gerne mal hier hinein schauen: Generic Manipulator Tool

Je nach Anforderung deiner Anwendung kann es sinnvoll sein, das komplette Schaltbild selbst zu zeichen (Stichwort OnPaint).
Ansonsten geht es nur darum, sich die Verbindungen und Positionen der Bauteile zu merken und dann zu zeichnen. Das Verschieben (MouseMove, MouseDown, MouseUp) und Verbinden sollte nicht weiter schwierig sein.

Mfg NeuroCoder

Thema: Aus der Geschwindigkeit und der Entfernung die "Reisedauer" ausrechnen
Am im Forum: Rund um die Programmierung

Hallo fr4gme,

da es sich hier um eine gleichförmige Bewegung (also konstante Geschwindigkeit) handelt, ist das ein linearer Zusammenhang.

Du berechnest aus deinen Referenzwerten die Geschwindigkeit: v = Weg / Zeit.
Dann kannst du durch Umstellen dieser Formel nach Zeit die Dauer für eine beliebige Strecke ermitteln.

Die Geschwindigkeit sollte übrigens bei deinen Werten etwa v = 12.0898666 pixel / sec betragen.

Mfg NeuroCoder

Thema: StChase - Ein kleiner Wettkampf zwischen Programmierern
Am im Forum: Projekte

Hallo stes,

mir sind spontan folgende Verbesserungsvorschläge für dein Projekt eingefallen (ohne dass ich mir den Code angeschaut habe):

  • Lagere die Verhaltenssteuerung in ein Interface aus und gib dem Jäger und Wolf eine Instanz davon. Die entsprechenden Events können dann die Funktionen aus dem Interface aufrufen.

    So vermeidest du, dass Programmierer an der Programmbasis und den EventHandlern "herumpfuschen" können. Das hast du zwar in Textform in deinem Post verboten, kann aber auch über solches Design erzwungen werden.
  • Damit man den Basiscode gar nicht anfassen braucht, kannst du ein Plugin-System implementieren. Jeder Duellant braucht dann nur seine Assembly mit dem Verhalten zur Verfügung zu stellen. Das Hauptprogramm (dein Simulator) kann diese DLLs laden und das Duell simulieren.

    Wenn du das Verhalten sowieso schon in Interfaces ausgelagert hast, ist ein Plugin-System nicht mehr weit weg.
  • Ich habe deinen Code nicht gesehen, aber für den Einstieg ist es sicherlich nützlich, wenn du Beispiel-Verhaltensmuster dazu legst, mit denen man direkt auch testen kann.
  • Halte die Einstiegshürden so gering wie möglich. D.h. biete schon vorgefertigte Solutions / Projekte zum Erstellen seines Verhaltens an, damit der geneigte Programmierer nur noch den Code für das Verhalten in die Funktionsrümpfe gießen muss.

    Zu diesem Punkt zählt auch (vielleicht sogar vor allem) ein sinnvoll gewähltes Interface-Design.


Mfg NeuroCoder

Thema: Repository Pattern : Übergabe der Interfaces
Am im Forum: Rund um die Programmierung

Hallo Ahrimaan,

suchst du vielleicht einer der beiden Möglichkeiten?


public interface IModule<T> where T : class
{
   void StartModule(bla, IRepository<T> repo);
}
Oder


public interface IModule
{
   void StartModule<T>(bla, IRepository<T> repo) where T : class;
}

Mfg NeuroCoder

Thema: Texterkennunge mit neuronalem Netzwerk
Am im Forum: Rund um die Programmierung

Hallo webco,

wenn es sowieso schon Schwarz / Weiß ist, sind die Graustufen natürlich nicht nötig. Da habe ich geschlafen, sorry.


inputB[index] = (B.GetPixel(x, y).B * A.GetPixel(x, y).B * B.GetPixel(x, y).G == 255 * 255 * 255) ? 0.0 : 1.0;
Das A in A.GetPixel(x, y).B sollte sicher ein B sein. Überhaupt frage ich mich, warum du den Alpha-Kanal an der Stelle eingehen lässt und nicht den Rot-Kanal?

Die Überprüfung lässt sich bestimmt auch noch weiter vereinfachen. Wenn du immer nur Schwarz / Weiss hast, genügt auch:

inputB[index] = (B.GetPixel(x, y).B > 0 ? 0.0 : 1.0;

Du kannst dir zur Sicherheit die Werte in den beiden Arrays im Debugger mal anschauen, oder auf die Konsole ausgeben lassen.

Mfg NeuroCoder

Thema: Texterkennunge mit neuronalem Netzwerk
Am im Forum: Rund um die Programmierung

Hallo webco,

wofür die Parameter stehen, erfährst du in der Dokumentation ;-)

Im Fall von ActivationNetwork stehen die Zahlen nach inputA.Length für die Anzahl an Neuronen in den Schichten (jede Zahl ist eine Schicht).

Dein Netzwerk hat also inputA.Length Eingabe-Neuronen, 2 Neuronen in einem Hidden-Layer und 1 Neuron in der Ausgabeschicht.

Ich bezweifle stark, dass du damit brauchbare Ergebnisse erreichst, insbesondere wenn die restlichen Buchstaben auch mal später hinzu kommen sollen.
Wieviele du brauchst, kann man nicht genau sagen. Das muss man häufig ausprobieren oder schätzen.

Oftmals funktionieren neuronale Netze besser, wenn man binäre Aktivierungen ({0, 1} oder {-1, 1} als Wertebereich der Neuronen) nimmt. Das heißt, es könnte helfen, wenn du dein Bild nach Graustufen konvertierst und auf eines der beiden Intervalle normierst.
Sicherlich ist es auch sinnvoll so viele Ausgabeneuronen zu haben wie die Anzahl an zu unterscheidenden Klassen (z.B. hier 26 fürs Alphabet).
Die Zwischenschicht sollte dann zwischen Anzahl Eingabe- und Anzahl Ausgabeneuronen liegen, damit eine Reduktion vorgenommen wird. Hier ist aber Vorsicht geboten, da zu groß dimensionierte Schichten das Auswendiglernen begünstigen und damit die Generalisierung verhindern können.

Mfg NeuroCoder

Thema: [gelöst] Evolutionäre Algorithmen mit relativer Fitness
Am im Forum: Rund um die Programmierung

Hallo winSharp93,

Zitat von winSharp93
Eine Methode ohne evolutionäre Algorithmen wäre jetzt z.B. das ganze wie in einem Fussballturnier zu machen: Man stellt ein paar hundert mögliche Kombinationen auf, lässt alle gegen alle antreten, kombiniert die höchstplatzierten neu und lässt das ganze erneut ablaufen.
Aber bin ich damit nicht schon wieder bei einer primitiven Form eines evolutionären Algorithmusses?
Im Wesentlichen schon (soweit ich mich mit diesen Dingern auskenne).

Im Grunde muss ein evolutionärer / genetischer Algorithmus die Individuen bezüglich ihrer Fitness ordnen. Ob dies nun über eine Fitness-Funktion oder eine selbst definierte totale Ordnungsrelation geschieht, sollte egal sein.

Falls du in deiner Library während der Bewertung an alle Individuen der Generation dran kommst, kann die Bewertung auch so erfolgen, dass du - wie du schon sagtest - das zu bewertende Individuum gegen alle restlichen antreten lässt und die Anzahl an Siegen / Niederlagen / Unentschieden gewichtet eingehen lässt. Dazu könntest du noch die benötigte Anzahl an Zügen addieren.

Ich kenne mich bei verfügbaren Libraries in dem Punkt nicht aus (besonders nicht bei Java). Habe mir bislang immer selbst etwas gebaut.

Wichtig ist, wie du die Kreuzung und Mutation gestaltest und welche Wahrscheinlichkeiten du dafür ansetzt. Spontan würde ich ein zufällig gewichtetes Mittel der Konstanten für die Kreuzung und Addieren einer beschränkten Zufallszahl für die Mutation wählen.
Zitat von winSharp93
Kann ein evolutionärer Algorithmus überhaupt mein Problem lösen?
Ja, das kann er. Für solche diskreten Probleme sind die oft geeignet.

Mfg NeuroCoder

Thema: Sprites erstellen: Hintergrund transparent machen
Am im Forum: Grafik und Sound

Hallo blr,

es gibt mehrere Möglichkeiten. Du könntest dich zum Beispiel mit Color Keying beschäftigen. Der Color Key gibt an, welche Farbe als transparent betrachtet werden soll.

Eine andere Möglichkeit wäre es, die Texturen mit Alpha-Kanal (also echter Transparenz) zu speichern und ein entsprechendes Texturformat zu benutzen.

Zumindest bei Direct3D 9 musst du noch schauen, dass die Renderstates korrekt gesetzt sind.

Mit freundlichen Grüßen,
NeuroCoder

Thema: Generic Manipulator Tool
Am im Forum: Projekte

Hallo myCSharpler,

Nach nun mehr als 3 Jahren rücke ich endlich mit dem Source raus. ;-)

Der Code der letzten / aktuellsten Version befindet sich im Anhang.
Das Projekt ist unter einer BSD-Style-Lizenz veröffentlicht.

Bei produktivem Einsatz, Weiterentwicklung oder Ähnlichem würde ich mich aus reinem Interesse sehr über eine PN oder E-Mail freuen.

Der Code ist qualitativ nicht in einer Form, in der ich ihn gerne veröffentliche. Er hat viel Refactoring nötig und ist an einigen Stellen nicht besonders elegant. Aus Zeitmangel war es mir jedoch nicht möglich, ihn in eine brauchbare Form zu bringen, obwohl dieses Vorhaben schon seit etwa 3 Jahren besteht. Interessenten mögen an dieser Stelle ein Nachsehen mit mir haben.

Mfg NeuroCoder

Thema: Tool zum Hinzufügen von Lizenz-Headern zu Code-Dateien
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich suche ein Tool, welches mir einen Lizenz-Header meiner Wahl (oder einfach irgendeinen Text) in jedes Source-File schreibt.

Lieb wäre mir, wenn es auch XML-Files korrekt behandelt.

Ich brauche keine GUI dafür. Ein gutes Shell Skript (bash) würde es auch tun.

Viele Grüße,
NeuroCoder

Thema: Bewegungssimulator/-rechner: Formel für ungleichmässig beschleunigte Bewegung nach v(t) umstellen
Am im Forum: Rund um die Programmierung

Hallo computer_case,

wie schon zuvor bemerkt, liegt dir hier eine gewöhnliche lineare Differentialgleichung vor.

d^2 s(t) / dt^2 = a(t)
bzw. das System
d s(t) / dt = v(t)
d v(t) / dt = a(t)

Genauer: Da dir die Position s(0) und die Geschwindigkeit v(0) zum Zeitpunkt t = 0 bekannt sind, handelt es sich um ein Anfangswertproblem.

Als einfaches Verfahren zur numerischen Lösung könntest du z.B. das Eulersche Polygonzug-Verfahren heranziehen: Eulersches Polygonzugverfahren

Um das Verfahren auf dein Problem anzuwenden, muss das y aus dem Artikel der Vektor y = [s; v] = [y_1; y_2] sein und das f(t,y) ist gegeben als Abbildung f(t,y) = [y_2; a(t)]. Durch diese Setzung ergibt sich genau obiges System.
Nun wählst du eine Schrittweite h (je genauer, desto kleiner) und berechnest dann iterativ die Iterierten y_(k), wobei du mit y_(0) = [s(0), v(0)] startest.

Runge-Kutta-Verfahren (z.B. das klassische) bieten dir aber eine schnellere Konvergenz und höhere Stabilität (sind aber auch etwas schwieriger zu implementieren).

Viele Grüße,
NeuroCoder

PS: Für sowas wären LaTeX-Tags nützlich.

Thema: Text direkt in ein Spiel schreiben (Statistik einblenden)
Am im Forum: Grafik und Sound

Hallo partyboy,

was du möchtest, nennt sich Overlay. Suche danach im Forum.

Mit hoher Wahrscheinlichkeit wirst du bei diesem Vorhaben mit Managed Code wenig Erfolg haben. Meist wird das mit DLL Injection oder Hooken von Funktionen des Direct3D-Device gelöst.

Suche auch in Spieleentwicklungsforen, wie z.B. zfx.info oder gamedev.net und natürlich mit einer (oder mehreren) Suchmaschine(n) deiner Wahl.

Mfg NeuroCoder

Thema: Automatische Software Updates
Am im Forum: Rund um die Programmierung

Hallo baer99,

mir fallen da folgende Threads / Projekte im Forum ein:
updateSystem.NET
AppDater (ehemals K_Updater)

Mfg NeuroCoder

Thema: SQL CE Performance Insert + Select
Am im Forum: Datentechnologien

Hallo Hirnhamster,

hast du dir schonmal NoSQL Datenbanken angesehen? Möglicherweise passt eine DocumentDB besser auf deine Anwendung.
Schau dir doch z.B. mal Raven DB an: http://ravendb.net/

Mfg NeuroCoder

Thema: Audioinput so übers LAN übertragen, als wäre er direkt auf dem Zielrechner entstanden
Am im Forum: Grafik und Sound

Hallo marcom,

ich bin mir zwar nicht sicher, aber ich vermute, dass JACK das kann, möglicherweise auch EsounD (esd).
Das ist jedoch Linux-Software.

Falls du das nicht einsetzen möchtest, könntest du vielleicht mit irgendeinem VoIP-Programm eine Verbindung aufbauen und die entsprechenden Streams als Ein- und Ausgabe verwenden.

Mfg NeuroCoder

Thema: Filesystem Sync bei Änderungen im Dateisystem
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo realpk,

suchst du den FilesystemWatcher?

Mfg NeuroCoder

Thema: Große Dateimengen (Punktliste im G-Code-Format) verarbeiten
Am im Forum: Rund um die Programmierung

Hallo lord-maricek,

du kannst ja direkt schonmal über die Anzahl der Zeilen die Größe deines Arrays herausfinden.
Wenn jeder Eintrag 3 doubles für die Koordinaten speichert, kommen bei einer Million Einträgen ungefähr 23 MB zusammen. Das ist auf heutiger Hardware unbedenklich.

Ich würde die Zwischenpunkte, mit denen du z.B. Strecken rasterst, on the fly generieren.
Wenn du das mit einem genügend großen Buffer koppelst, sollte das gut funktionieren.

Ich würde mir das ungefähr so vorstellen:


public static IEnumerable<Point3> CreateRasterList(IEnumerable<GItem> items)
{
	GItem last = items.First();
	foreach(GItem item in items)
	{
		// Bestimme Anzahl Zwischenpunkte
		int nSteps = DetermineSteps(last, item);
		
		for (int i = 0; i < nSteps; ++i) {
			// Interpoliere
			yield return CalculatePosition(last, item, nSteps, i);
		}
		
		last = item;
	}
}

public static IEnumerable<Point3> BufferRaster(IEnumerable<Point3> source, int bufferSize)
{
	// Liste erstellen um Lazy-Evaluation von Take() zu verhindern
	List<Point3> buffer = source.Take(bufferSize).ToList();

	while (buffer.Count > 0)
	{
		for(int i = 0; i < buffer.Count; ++i) 
		{
			yield return buffer[i];
		}
		buffer = source.Take(bufferSize).ToList();
	}
}

public static IEnumerable<Point3> ProcessGList(IEnumerable<GItem> items)
{
	// Buffer-Größe z.B. 80 Punkte
	return BufferRaster(CreaterRasterList(items), 80);
}

Die DetermineSteps() und CalculatePosition() Funktionen müssen natürlich entsprechend implementiert werden.
Bei letzterer kann die Interpolation auch ganz unterschiedlich ausfallen (linear, kubisch etc.).

Die Buffer-Größe hängt von der Bandbreite deiner Hardware-Schnittstelle und der Verarbeitungsgeschwindigkeit deiner Fräse ab. Primär vermutlich von letzterer.

Mfg NeuroCoder

PS: Der obige Code hat sicher noch viel Verbesserungspotential. Insbesondere werden keine Fehler abgefangen.
Und mein C# ist wegen dem vielen Matlab in letzter Zeit etwas eingerostet.

EDIT: Code etwas verbessert.