mikrocontroller.net

Forum: PC-Programmierung Kleines Matheproblem (Positionsbestimmung)


Autor: Sneef (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Tach,
im Rahmen eines kleinen Bastelprojekts knobel ich gerade an einem 
Geometrie-Problem, komme aber nicht so recht weiter. Vielleicht hat ja 
hier jemand einen Tipp für mich?

Der Aufbau:
 - Drei Empfänger A, B und C stehen auf einer Ebene und bilden ein 
gleichseitiges Dreieck
 - Die Postionen/Abstände der Empfänger sind bekannt
 - Innerhalb des Dreiecks bewegt sich ein Sender
 - Jeder der drei Empfänger meldet die aktuelle Signalstärke, die er 
misst

Die Frage:
 - Wie bekomme ich am besten die Position (X,Y) des Senders in der Ebene 
heraus?

PS: Die Signalstärke des Senders ist nicht konstant. D.h. man kann sich 
nur auf die relativen Unterschiede an den drei Empfängern stützen.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wäre mein Rat, erstmal ein einfacheres Problem zu lösen, nämlich die 
Entsprechung für den eindimensionalen Fall, also zwei Empfänger an den 
Koordinaten x = ±1 und der Sender befindet sich irgendwo auf der 
Verbindungslinie. Mit dem, was Du dabei lernst, wird Dir dann die Lösung 
der eigentlichen Aufgabenstellung leichter fallen.

Autor: . . (Gast)
Datum:

Bewertung
-5 lesenswert
nicht lesenswert
Ahja, wieder so ein Salamiding, wo wichtige Randbedingungen fehlen und 
damit die Sache mehrdeutig wird und die Ratgebenden sich in die haare 
kriegen.

Autor: WR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sneef,
gehst Du davon aus, dass die empfangene Signalstärke linear mit dem 
Abstand zusammenhängt oder gibt es da einen nichtlinearen Zusammenhang?

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Ansatz wäre:
Der Mittelpunkt M des Dreiecks ABC ist ja bekannt.
Die einzelnen EmpfangspegelPa,Pb und Pc werden gemessen.

Im Mittelpunkt gilt: Pa = Pb = Pc
oder auch die Relationen Pa:Pb = Pa:Pc = Pb:Pc

Vlt. lässt sich so die Position von S errechnen ?

Autor: Sneef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für zwei Empfänger ist das ganze recht einfach zu lösen. Hier mein 
Vorschlag:
#include "stdafx.h"
#include  <algorithm>
#include <iostream>

// Both receivers are 1000mm apart
// Receiver A marks the origin
const int PosA = 0;
const int PosB = 1000;
const int Distance = PosB - PosA;

double GetPosition(int signalStrengthA, int signalStrengthB)
{
  // Nomalize the signal strengths
  double normalizedStrengthA = (double)signalStrengthA / std::max(signalStrengthA, signalStrengthB);
  double normalizedStrengthB = (double)signalStrengthB / std::max(signalStrengthA, signalStrengthB);

  // Compute the distance from receiver A based on the normalized signal strengths
  double ratio = normalizedStrengthA / (normalizedStrengthA + normalizedStrengthB);
  double distanceFromA = Distance - ratio * Distance;

  return distanceFromA;
}

void main()
{
  std::cout << GetPosition(100, 100) << std::endl; // Equal signal strength should yield exact center position (500)
  std::cout << GetPosition(200, 200) << std::endl; // Same as before => 500
  std::cout << GetPosition(500,   0) << std::endl; // Now we are located at receiver A => position 0
  std::cout << GetPosition(  0, 500) << std::endl; // Now we are located at receiver B => position 1000
  std::cout << GetPosition( 66,  33) << std::endl; // We are 1/3rd of the way => postion 333
}

Bei drei Empfängern komme ich aber wie gesagt nicht weiter...

WR schrieb:
> gehst Du davon aus, dass die empfangene Signalstärke linear mit dem
> Abstand zusammenhängt oder gibt es da einen nichtlinearen Zusammenhang?

Erst mal ja. Verkomplizieren kann ich es dann ja immernoch ;-)

Autor: georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Sneef schrieb:
> - Innerhalb des Dreiecks bewegt sich ein Sender
>  - Jeder der drei Empfänger meldet die aktuelle Signalstärke, die er
> misst

Da kann man viel rechnen, funktionieren kann das nur im Freifeld, wo 
keine Reflektionen vorkommen können. Ein würfelförmiger Raum darum herum 
macht jede Berechnung sinnlos, man könnte höchstens an vielen Punkten 
Messungen durchführen und danach Näherungen berechnen. Aber nur wenn 
sich an der Umgebung nichts ändert, Menschen wären da das reine Gift.

Georg

Autor: ueberlegung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre es nicht eine Möglichkeit um ab jeder Ecke(Station) des Dreiecks 
einen Kreis zu zeichnen und den Durchmesser des Kreises je 
Empfangsstärke zu verkleinern?

Dort wo die Schnittpunkte der Kreise liegen könnte sich der Empfänger 
aufhalten?

Oder ist die Idee falsch gedacht?

Autor: ueberlegung2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternativ

Das Feld wie bei der Wettervorhersage in Quadrate zerlegen und für jedes 
Quadrat der Größe x eine Messung zu allen Empfangsstationen abspeichern.

Anschließend muss nur der Wert der aktuellen Position mit den 
abgespeicherten verglichen werden und der Wert, der dem am nächsten 
kommt spiegelt die Position wieder.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Die Frage:
>  - Wie bekomme ich am besten die Position (X,Y) des Senders in der Ebene
> heraus?

1. Schritt: die Signalstärke auf eine lineare Skala
  projezieren (=> Abstand zu einem Sender)

2. Schritt: je Empfänger erhält man einen Kreis (mit Radius
  Abstand Sender-Empfänger), auf dem der Sender liegt, d.h.
  je zwei Empfänger erhält man als Schnitt zwei mögliche
  Punkt, d.h. für alle 3 Empfänger erhält man so sechs Punkte.

3. Schritt: von den sechs Punkten sind 3 Punkte in etwa
   "gleich". Der Durchschnitt davon ist dann in etwa die
   Position des Senders (im numerisch möglichen Rahmen)

(Voraussetzung: homogenes Feld, keine Reflexionen etc.)

Autor: Sneef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> 2. Schritt: je Empfänger erhält man einen Kreis (mit Radius
>   Abstand Sender-Empfänger)

Das wird nicht funktionieren. Die Sendestärke des Senders schwankt ja 
beliebig (siehe oben). Daher ist eine direkte Zuordnung von Signalstärke 
zu Entfernung nicht möglich.

Autor: Nils (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Du kannst die Signalstärke als baryzentrische Koordinaten im Dreieck 
ansehen. Du musst sie nur auf 0..1 normalisieren.

Die Umrechnung auf kartesische (xy) Koordinaten ist in dem Wikipedia 
Artikel zu den baryzentrischen Koordinaten aufgeschrieben:

https://de.wikipedia.org/wiki/Baryzentrische_Koordinaten

Das funktioniert übrigens mit allen Dreiecken. Es muss nicht 
gleichschenklig sein.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Sigi schrieb:
>> 2. Schritt: je Empfänger erhält man einen Kreis (mit Radius
>>   Abstand Sender-Empfänger)
>
> Das wird nicht funktionieren. Die Sendestärke des Senders schwankt ja
> beliebig (siehe oben). Daher ist eine direkte Zuordnung von Signalstärke
> zu Entfernung nicht möglich.

Deswegen wird ja im Schritt 1 die Projektion auf eine
Skala ausgeführt (sozusagen eine Art Vorbereitung).
Dabei muss natürlich die relativen Unterschiede einfliessen,
d.h. die schwankende Signalstärke.

Autor: Geert H. (geerth)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Elektor hat in Heft 9/2018 ein interessante Artikel für dich.
https://www.elektormagazine.de/magazine/elektor-59/41887

Finder kann radio Abstand messen, ziemlich genau: ~0,3m

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
pA,pB und pC sind die Empfangsstärken an A,B und C und sind normierte 
Skalare

Die Punkte A,B,C und S sind als Ortsvektoren zu betrachten.

Meine Vermutung und nur exemplarisch getestet:

 S = pA*A + pB*B + pC*C

: Bearbeitet durch User
Autor: Geert H. (geerth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geert H. schrieb:

> Finder kann radio Abstand messen, ziemlich genau: ~0,3m
Das funktioniert mit Messung von Zeitverzögerung auf 
Lichtgeschwindigkeit.
Also nicht mit Signalstärke.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Sigi schrieb:
>> 2. Schritt: je Empfänger erhält man einen Kreis (mit Radius
>>   Abstand Sender-Empfänger)
>
> Das wird nicht funktionieren. Die Sendestärke des Senders schwankt ja
> beliebig (siehe oben). Daher ist eine direkte Zuordnung von Signalstärke
> zu Entfernung nicht möglich.

Wenn das Signal sich während der Messung der drei Empfänger ändert, ist 
das Problem nicht zu lösen, da es nicht klar ist, ob die beliebige 
Schwankung oder die Entfernung die Signalstärke bestimmt.

Autor: Sneef (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Bernd schrieb:
> Wenn das Signal sich während der Messung der drei Empfänger ändert, ist
> das Problem nicht zu lösen, da es nicht klar ist, ob die beliebige
> Schwankung oder die Entfernung die Signalstärke bestimmt.

So schlimm ist es nicht :-)
Alle drei Empfänger messen exakt gleichzeitig, die Signalstärke des 
Senders ändert sich während dessen also nicht.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd schrieb:
> Wenn das Signal sich während der Messung der drei Empfänger ändert, ist
> das Problem nicht zu lösen, da es nicht klar ist, ob die beliebige
> Schwankung oder die Entfernung die Signalstärke bestimmt.

Danke Bernd, sehr interessanter Einwand: Aber, wenn sich
die Sendeleistung ändert, dann für alle 3 Empfänger
gleichzeitig. Eine Positionsänderung hingegen führt zu
einer nicht gleichgrossen Änderung, d.h. beide Effekte
lassen sich mathematisch (im Rahmen der Numerik bla..)
voneinander trennen.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein paar Beispiele für meine obige Lösungsformel:

%% Gleichseitiges Dreieck in der Ebene
octave:51> A=[-0.5;0];B=[0.5;0];C=[0;0.87];

%% Fall 1: Alle signale sind gleich stark und normiert
octave:52> PA=1/3;PB=1/3;PC=1/3;

octave:53> S=PA*A + PB*B + PC*C
S =

   0.00000
   0.29000
%% Das sind die Koordinaten des Mittelpunkts von obigem Dreieck

%% Fall 2:
octave:54> PA=0;PB=0;PC=1;
octave:55> S=PA*A + PB*B + PC*C
S =

   0.00000
   0.87000
%% Das sind die Koordinaten von C


Die Sendeposition ist die mit der normierten Signalstärke gewichtete 
Summe
der Ortsvektoren.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils schrieb:
> Du kannst die Signalstärke als baryzentrische Koordinaten im Dreieck
> ansehen. Du musst sie nur auf 0..1 normalisieren.
>
> Die Umrechnung auf kartesische (xy) Koordinaten ist in dem Wikipedia
> Artikel zu den baryzentrischen Koordinaten aufgeschrieben:
>
> https://de.wikipedia.org/wiki/Baryzentrische_Koordinaten
>
> Das funktioniert übrigens mit allen Dreiecken. Es muss nicht
> gleichschenklig sein.

Meine erste Vermutung war, dass das so nicht geht. Ich habe
mir mal kurz ein Gegenbeispiel ausgedacht, hoffentlich nicht
falsch:
Gegeben sei ein Quadrat, von dem 3 Punkte die Punkte A,B,C
bilden. Der Sender befinde sich in der Mitte des Quadrats,
d.h. Abstand zu allen 3 Empfängern exakt gleich. Die
baryzentische Kombination liefet aber die Mitte von A,B,C,
d.h. nicht den Sender.
Man kann sich das auch mathematisch klar machen: Die Sendeleistung
impliziert projektivgeometrisch 3 Kegel mit den zugehörigen
Schnitten (Kegelschnitte!). Diese sind iA aber gebrochenquadratisch
und nicht gebrochenlinear, d.h. können iA niemals baryzenrtrisch
erfasst werden. Es kann aber im Spezialfall sein, dass man eine
"gute" Näherung bekommt (z.B. im Fall von 2 Punkten, da ist
die Entfernungsgeschichte und die baryzentrische Geschichte
identisch, siehe Bernsteinpolynome etc.)

Autor: Markus B. (russenbaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit der Annahme das es sich ums Freifeld handelt und es keine 
Reflexionen usw. gibt nimmt ist die empfangene Leistung indirekt 
proportional vom Quadrat des Abstandes zum Sender.

D.h.

Pe = (1/r^2) * Ps

Damit kannst Du Dir Deine Gleichungen aufstellen:

Ps = a^2 * Pa = b^2 * Pb = c^2 Pc

wenn a, b, c die jeweiligen Abstände zu den Eckpunkten des Dreiecks zum 
Sender sind
Pa, Pb und Pc die Empfangenen Leistungen an den Eckpunkten A,B,C
Ps die Sendeleistung

Mit a,b,c und den Abständen zwischen den Eckpunkten kannst Dir die 
Position ausrechnen da es hier wieder kleinere Dreiecke in Deinem großen 
Dreieck gibt und mit Zuhilfenahme von z.B. b^2 / a^2 = Pa / Pb usw. 
kannst Du in den Gleichungen a, b, c ausrechnen/ersetzen.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Bernd schrieb:
>> Wenn das Signal sich während der Messung der drei Empfänger ändert, ist
>> das Problem nicht zu lösen, da es nicht klar ist, ob die beliebige
>> Schwankung oder die Entfernung die Signalstärke bestimmt.
>
> So schlimm ist es nicht :-)
> Alle drei Empfänger messen exakt gleichzeitig, die Signalstärke des
> Senders ändert sich während dessen also nicht.

Das wäre geklärt :)

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Signalstärke wirklich linear von der Entfernung abhängen würde 
und es keine Reflektionen gäbe, wäre es relativ einfach:

Empfänger auf den Punkten A,B,C (Koordinaten sind bekannt)
Sender auf Punkt S (Koordinaten unbekannt)
A= (xA,yA), B= (xB,yB), etc.

EA ... Signalstärke bei A
EB ... Signalstärke bei B
EC ... Signalstärke bei C
S ... Sendestärke
dA ... Abstand Sender zu Empfänger A
dB ... Abstand Sender zu Empfänger B
dC ... Abstand Sender zu Empfänger C

EA= S*dA
EB= S*dB
EC= S*dC
(xS-xA)^2+(yS-yA)^2 = dA^2
(xS-xB)^2+(yS-yB)^2 = dB^2
(xS-xC)^2+(yS-yC)^2 = dC^2

Unbekannt sind S,dA,dB,dC,xS,yS. Macht also 6 Gleichungen und 6 
Unbekannte -> kann man lösen.

Autor: Imonbln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht kann man auch die Empfänger Modifizieren.
Wenn man die Empfänger zum Beispiel mit Richtfunkantennen oder 
äquivalenten ausstattet und die Antennen sich im Kreis (halbkreis, 
whatever) drehen lässt, dann ist die Signalstärke egal, jede Antenne hat 
einen kleinen bekannten Winkel in dem Sie den Sender Ortet.

Dann kann man einfach den Schnittpunkt bestimmen auf den die drei 
Empfänger Kontakt haben.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in C++ (ohne spezielle Vector Lib) :
#include <iostream>
using namespace std;

// xy Koordinaten A B C
double Ax=-0.5;
double Ay=0;

double Bx=0.5;
double By=0;

double Cx=0;
double Cy=0.87;

void showSendePosition(double PegelA, double PegelB, double PegelC)
{
  double sum = PegelA + PegelB + PegelC;
  double pA = PegelA/sum;
  double pB = PegelB/sum;
  double pC = PegelC/sum;
  
  double Sx = pA * Ax + pB * Bx + pC * Cx;
  double Sy = pA * Ay + pB * By + pC * Cy;
  
  cout << Sx << "  " << Sy << endl; 
}

int main ()
{
  showSendePosition(100,100,100); //Sender im Mittelpunkt
  showSendePosition(0,100,0);  // Sender bei B
  showSendePosition(2500,10,20); // Sender ganz nah bei A
  
  return 0;
}



Autor: Max M. (jens2001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulrich schrieb:
> Signalstärke wirklich linear von der Entfernung abhängen

OMG!!

Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
R. M. schrieb:
> in C++ (ohne spezielle Vector Lib) :
> ...

Und woher weißt du jetzt, dass das angezeigte Ergebnis richtig ist?

Autor: Max M. (jens2001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Und woher weißt du jetzt, dass das angezeigte Ergebnis richtig ist?

1. Weil ich es mit GeoGebra, das ist ein Konstuktionsprogramm für 
Geometrie, auf Plausibilität überprüft habe.

2. Weil das die elementare Vektorgeometrie (Klasse 10 oder  11) aussagt.

Autor: my2ct (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
WR schrieb:
> gehst Du davon aus, dass die empfangene Signalstärke linear mit dem
> Abstand zusammenhängt oder gibt es da einen nichtlinearen Zusammenhang?

Komische Frage - der Fachkräftemangel ist real.

Allein schon die Physik sorgt dafür, dass die Signalstärke mit dem 
Quadrat der Entfernung abnimmt. Ein linearer Zusammenhang ergibt sich, 
wenn man den Logarithmus zu Hilfe nimmt.

Autor: R. M. (n_a_n)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Im 1dimensionalen Fall sei A = 0  und B = 1.

pA sei 0.5 und pB sei 0.5.

Somit beschränkt sich "meine" Formel auf Skalare

S = pA * A + pB * B
  = 0.5 * 0 + 0.5 * 1
  = 0.5
 Das ist die Mitte zwischen A und B.

Natürlich ist der Empfangspegel nicht linear mit der Distanz, aber wenn 
man genau hinschaut kommen nur relative Abhängigkeiten vor.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max M. schrieb:
>> Signalstärke wirklich linear von der Entfernung abhängen
>
> OMG!!

Mir ist schon klar, dass das wahrscheinlich falsch ist, aber der OP hat 
es nun mal so postuliert. Außerdem gibt es sehr wohl Spezialfälle, wo es 
stimmt, nämlich wenn nur 2D-Ausbreitung möglich ist. Sender und 
Empfänger zwischen zwei Metallflächen mit Abstand kleiner Lambda, zum 
Beispiel.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulrich schrieb:
> EA= S*dA
> EB= S*dB
> EC= S*dC

Hoppla, das war natürlich falsch.

Richtig wäre:
EA= S/dA
EB= S/dB
EC= S/dC
(xS-xA)^2+(yS-yA)^2 = dA^2
(xS-xB)^2+(yS-yB)^2 = dB^2
(xS-xC)^2+(yS-yC)^2 = dC^2

Autor: Wolfgang (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Sneef schrieb:
> Vielleicht hat ja hier jemand einen Tipp für mich?

Betrachte jeweils die Signale zweier Empfänger. Das ergibt jeweils eine 
Standlinie. Der Sender befindet sich dann am Schnittpunkt der 
Standlinien.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> R. M. schrieb:
>> in C++ (ohne spezielle Vector Lib) :
>> ...
>
> Und woher weißt du jetzt, dass das angezeigte Ergebnis richtig ist?

Aus dem Oben schon gesagten ist das natürlich falsch.
(alternativer Beweis: Der Sender bewegt sich auf einer der
3 Schenkel. Die Signalstärke verschwindet nicht (!), aber
eine Komponente der baryzentrische Koordinate müsste 0 sein..
den Rest spare ich mir hier..)

R. M. schrieb:
> 2. Weil das die elementare Vektorgeometrie (Klasse 10 oder  11) aussagt.

Ulrich hat Oben schon das Gleichungssystem aufgestellt. Ein
Schüler der 10./11. Klasse kann das iA niemals lösen, selbst
ein Mathestudent kriegt das zT so nicht raus. (Aber: die
Gleichungen sind zT quadratisch, d.h. haben je Zeile
zT 2 Lösungen, d.h. 6 Gleichungen reichen nicht aus, es braucht
evtl. 9 Gleichungen. Es wird aber das ausgedrückt, was ich Oben
in meiner Lösung beschreiben wollte)

my2ct schrieb:
> Allein schon die Physik sorgt dafür, dass die Signalstärke mit dem
> Quadrat der Entfernung abnimmt. Ein linearer Zusammenhang ergibt sich,
> wenn man den Logarithmus zu Hilfe nimmt.

Nackt aufgeschrieben hat man quadratische Gleichungen (Ulrich)
der Form a*x^2+b*y^2+.., d.h. der Logarithmus bring hier nichts,
hier helfen wie im eindim. Fall nur quadratische Ergänzungen,
im zweidim. Fall natürlich komplexer (gute Übung, sollte jeder
mal versucht haben, z.B. der zweidim Fall).

Als brauchbare Lösung hilft hier nur

Max M. schrieb:
> https://de.wikipedia.org/wiki/Abstandsgesetz

(war auch meine Ansatz, es kommt aber noch die Einwirkung
der realen Umgebung hinzu, d.h. es muss eine Messkurve
aufgenommen werden) und die Schnittpunktbetrachtung der
3 "Empfangs"-Kreise in betracht.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Der Sender bewegt sich auf einer der
> 3 Schenkel. Die Signalstärke verschwindet nicht (!), aber
> eine Komponente der baryzentrische Koordinate müsste 0 sein..

Das ist richtig.
Um das zu korrigieren sollte man wirklich den realen Testaufbau kennen.
Handelt es sich um eine theoretische Aufgabe oder steckt ein 
physikalisches System dahinter. Im zweiten Fall muss eine Schwelle 
eingeführt werden,
die einen "kleinen" Messwert gleich Null setzt.

Wenn es sich um eine Hausaufgabe handelt, kann ich postuliern eine 
Empfangsleistung sei Null und dann lande ich korrekterweise auf einem 
Schenkel.

: Bearbeitet durch User
Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und das es erlaubt ist eine Komponente gleich null zu setzen, entnahm 
ich diesem Beitrag des TO.

Sneef schrieb:
> std::cout << GetPosition(500,   0) << std::endl; // Now we are located
> at receiver A => position 0
>   std::cout << GetPosition(  0, 500) << std::endl; // Now we are located
> at receiver B => position 1000

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
R. M. schrieb:
> Im zweiten Fall muss eine Schwelle
> eingeführt werden,
> die einen "kleinen" Messwert gleich Null setzt.

Ich hatte gerade esrt Zeit, den Wikiartikel zu
Baryzentrik durchzulesen. Im Prinzip kann man
sich das folgendermassen vorstellen: Man zeichnet
zwischen jedem Punkt und der gegenüberliegenden
Linie z.B. 11 Parallele ein, so erhält man ein
Raster (ich nenne es mal baryzentrisches Raster RB,
einfach vorstellbar). In einer zweiten Zeichnung
mit den selben 3 Punkten (am Besten gleichschenkliges
Dreieick) zeichnet man zu jedem Punkt 11 Kreise
derart, das Kreis 0 r=0 hat und Kreis 10 die anderen
Punkte berührt (dieses System von "Dreiecken nenne
ich mal zirkulares Raster RZ). Für RZ kann man zu
einem Sender (bzw. dessen Leistungen) sehr einfach
die Koordinaten bestimmen. Eine Übertragung in RB
liefert aber iA andere Punkte. Das liegt daran, dass
RB "linear" aufgebaut ist, RZ dagegen einen gekrümmte
Raumaufteilung ist.

R. M. schrieb:
> Wenn es sich um eine Hausaufgabe handelt

ja, habe ich auch schon gedacht, bzw. der Lehrer
hat sich dann wohl zu wenig gedacht..

Autor: Sneef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> ja, habe ich auch schon gedacht, bzw. der Lehrer
> hat sich dann wohl zu wenig gedacht..

Nein, da kann ich Entwarnung geben. Es handelt sich nicht um eine 
Hausaufgabe :-)
Vielmehr ist das ganze Teil einer kleinen Simulation/Visualisierung, die 
ich gerade aus Spaß an der Freude am PC implementiere.

Autor: rbx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Vielmehr ist das ganze Teil einer kleinen Simulation/Visualisierung, die
> ich gerade aus Spaß an der Freude am PC implementiere.

Hast du dabei auch mal einen kleinen Blick in den kleinen Aktenordner 
"Von Sternennavigation bis GPS" oder in das kleine Handbuch zur 
Ortsbestimmung geschaut - oder ein kleines, leicht visualisiertes 
Gedankenexperiment gemacht?

Autor: Sigi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Positionsbestimmungen sind ja für viele Probleme
interessant, deshalb habe ich das ganze mal in SW
gefasst und ausrechnen lassen.
Das Erste Bild zeigt den Aufbau, Sender plus drei
Empfänger sowie die berechnete Senderposition.
Die beiden letzen zeigen je 1000 Berechnungen,
jede Linie stellt den Unterschied zwischen
baryzentrischer und meiner Berechnung da. Es ist
gut zu sehen, wie die baryzentrische Lösung stark
in das Zentrum des Dreiecks zieht. Nur Sender im
Zentrum führen zu anärend gleichen Punkten.

rbx schrieb:
> Hast du dabei auch mal einen kleinen Blick in den kleinen Aktenordner
> "Von Sternennavigation bis GPS" oder in das kleine Handbuch zur
> Ortsbestimmung geschaut - oder ein kleines, leicht visualisiertes
> Gedankenexperiment gemacht?

Dieses "Gedankenexperiment" ist hier überflüssig, da
die Aufgabenstellung zwar ähnlich, in den wesentlichen
Details aber grundlegend anders sind. Die Berechnung
der Senderposition unter der Aufgabenstellung ist jedenfalls
einfach, im Gegensatz zu GPS, wo komplexe Differentialgleichungen
gelöst werden müssen.

Autor: rbx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Die Berechnung
> der Senderposition unter der Aufgabenstellung ist jedenfalls
> einfach, im Gegensatz zu GPS, wo komplexe Differentialgleichungen
> gelöst werden müssen.

Ja, die gestellte Aufgabe sollte auch einfacher sein. Unsere 
Hörfähigkeit kommt sogar mit zwei Empfängern aus. Manchmal auch mehr, 
aber das ist nicht unbedingt ein Vorteil, bzw. die Signalstärke als 
solche trägt nicht unbedingt zur besseren Ortung bei.

Wenn z.B. bei einem Braunkohletagebau die Großgeräte nah am Dorf sind, 
dann vibrieren sogar die Hauswände und der Sound ist so laut, da weißt 
du nicht sofort, wo der Lärm eigentlich genau herkommt.

Handy verlegt und selbst anrufen funktioniert dagegen sehr gut, -> es 
braucht noch noch nichteinmal ein "Gedankenexperiment".

(Oder bei einem Gewitter (wo ist es?) könnte man Freunde fragen, aber 
man würde sie kaum fragen, wie laut + sich auf Windrichtungen stützen.)

Die Programmbilder oben sagen auch nur grob "irgendwo in der Mitte" oder 
"irgendwo drumherum". Damit hätte man aber zumindest ein 
Muster/Erfahrungswerte, welche zur zusätzlichen Orientierung dienen 
können.

Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Positionsbestimmungen sind ja für viele Probleme
> interessant, ...

Ok, schrittweise. Erkläre erstmal, wie du von einer gegebenen 
Senderposition auf die Signalstärke an den Empfängerpositionen kommst 
(Hinweis, der OP hat dir bis jetzt keine Infos dazu geliefert). Ohne 
diesen Schritt, kannst du micht testen, wie gut deine Methode ist.

Es ist gut möglich, dass es sich beim Problem des OP um ein "ill-posed, 
ill-conditioned nonlinear inverse problem" handelt. Um soetwas zu lösen, 
braucht man etwas mehr als:
R. M. schrieb:
> 1. Weil ich es mit GeoGebra, das ist ein Konstuktionsprogramm für
> Geometrie, auf Plausibilität überprüft habe.
>
> 2. Weil das die elementare Vektorgeometrie (Klasse 10 oder  11) aussagt.

Autor: Carsten P. (cp70)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ich glaube ja eher, dass der OP eine Lösung für ein kommerzielles 
Problem sucht oder noch üblere Absichten hat ^^

Aber wenn es doch so sein sollte, dann braucht es einen vierten Kanal 
von einer der drei Quellen, die als Referenz fungiert. Wenn der Messwert 
11,5 ist, in welches Einheit auch immer, und die Referenz bei 1,01 
liegt, kann man den Messwert entsprechend korrigieren. Ansonsten helfen 
die Theorien in Fehler- und Störungsrechnung weiter.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Erkläre erstmal, wie du von einer gegebenen
>Senderposition auf die Signalstärke an den Empfängerpositionen kommst

Besteht daran irgendein Zweifel? Die Stärke P des Sendersignals am Ort 
des Empfängers ist umgekehrt proportional zum Quadrat des 
Sender-Empfänger-Abstands r, also P ~ 1/r^2. Alles andere wäre vom 
physikalischen Standpunkt her Nonsens.

>Es ist gut möglich, dass es sich beim Problem des OP um ein "ill-posed,
>ill-conditioned nonlinear inverse problem" handelt.

Unter der (einzigen realistischen) Annahme P ~ 1/r^2 ist das Problem 
klar und eindeutig definiert. Nichtlinear ist es allerdings, da hast Du 
recht.

>Um soetwas zu lösen, braucht man etwas mehr als: [...]

Das Problem des TO zu lösen, ist rechentechnisch etwas knifflig, aber 
machbar. Letztlich braucht man dazu nichts weiter als elementare 
Mathematik (pq-Formel).

Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
> Besteht daran irgendein Zweifel? Die Stärke P des Sendersignals am Ort
> des Empfängers ist umgekehrt proportional zum Quadrat des
> Sender-Empfänger-Abstands r, also P ~ 1/r^2. Alles andere wäre vom
> physikalischen Standpunkt her Nonsens.

Es wird implizit davon ausgegangen, dass es sich um Sender und Empfänger 
für Funkwellen handelt. Das hat der OP aber nie explizit geschrieben.

LostInMusic schrieb:
> Unter der (einzigen realistischen) Annahme P ~ 1/r^2 ist das Problem
> klar und eindeutig definiert. Nichtlinear ist es allerdings, da hast Du
> recht.

ill-posed und ill-conditioned hat wenig mit "klar definiert" zu tun. Es 
hat eher etwas damit zu tun, dass es drei Gleichungen (drei Messwerte) 
und 6 Unbekannte gibt (Position des Senders, Signalstärke des Senders, 
Fehler der 3 Messungen). Dazu kommen nahezu beliebige Korrelationen 
zwischen den Unbekannten und potenziell nicht normalverteile Messfehler.

LostInMusic schrieb:
> Das Problem des TO zu lösen, ist rechentechnisch etwas knifflig, aber
> machbar. Letztlich braucht man dazu nichts weiter als elementare
> Mathematik (pq-Formel).

Ich bin auf eine Lösung gespannt, die Messfehler beinhaltet und mit 
pq-Formel auskommt.

Autor: georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
mh schrieb:
> dass es sich um Sender und Empfänger
> für Funkwellen handelt. Das hat der OP aber nie explizit geschrieben.

Na und, die quadratische Abhängigkeit ist eine geometrische Eigenschaft 
des dreidimensionalen Raums und gilt für jede Wellenausbreitung - auch 
für Schallwellen, Gravitationswellen ...

Georg

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sneef schrieb:
> Für zwei Empfänger ist das ganze recht einfach zu lösen. Hier mein
> Vorschlag:
> #include "stdafx.h"
> #include  <algorithm>
> #include <iostream>
>
> // Both receivers are 1000mm apart
> // Receiver A marks the origin
> const int PosA = 0;
> const int PosB = 1000;
> const int Distance = PosB - PosA;
>
> double GetPosition(int signalStrengthA, int signalStrengthB)
> {
>   // Nomalize the signal strengths
>   double normalizedStrengthA = (double)signalStrengthA /
> std::max(signalStrengthA, signalStrengthB);
>   double normalizedStrengthB = (double)signalStrengthB /
> std::max(signalStrengthA, signalStrengthB);
>
>   // Compute the distance from receiver A based on the normalized signal
> strengths
>   double ratio = normalizedStrengthA / (normalizedStrengthA +
> normalizedStrengthB);
>   double distanceFromA = Distance - ratio * Distance;
>
>   return distanceFromA;
> }
>
> void main()
> {
>   std::cout << GetPosition(100, 100) << std::endl; // Equal signal
> strength should yield exact center position (500)
>   std::cout << GetPosition(200, 200) << std::endl; // Same as before =>
> 500
>   std::cout << GetPosition(500,   0) << std::endl; // Now we are located
> at receiver A => position 0
>   std::cout << GetPosition(  0, 500) << std::endl; // Now we are located
> at receiver B => position 1000
>   std::cout << GetPosition( 66,  33) << std::endl; // We are 1/3rd of
> the way => postion 333
> }
>
> Bei drei Empfängern komme ich aber wie gesagt nicht weiter...
>
> WR schrieb:
>> gehst Du davon aus, dass die empfangene Signalstärke linear mit dem
>> Abstand zusammenhängt oder gibt es da einen nichtlinearen Zusammenhang?
>
> Erst mal ja. Verkomplizieren kann ich es dann ja immernoch ;-)


Der TO hat selbst einen Lösungsvorschlag gemacht.
Und zwar für den Eindimensionalen Fall mit 2 Empfängern auf der x-Achse.
Er kam aber mit 3 Empfängern, die in einer Ebene liegen nicht klar.
Außerdem schreibt er das in seiner Simulation ein linearer Zusammenhang 
gelten soll.

Unter diesen Voraussetzungen habe ich ihm einen Vorschlag mit 3 
Empfängern
gemacht.
#include <iostream>
using namespace std;

// xy Koordinaten A B C
double Ax=-0.5;
double Ay=0;

double Bx=0.5;
double By=0;

double Cx=0;
double Cy=0.87;

void showSendePosition(double PegelA, double PegelB, double PegelC)
{
  double sum = PegelA + PegelB + PegelC;
  double pA = PegelA/sum;
  double pB = PegelB/sum;
  double pC = PegelC/sum;
  
  double Sx = pA * Ax + pB * Bx + pC * Cx;
  double Sy = pA * Ay + pB * By + pC * Cy;
  
  cout << Sx << "  " << Sy << endl; 
}

int main ()
{
  showSendePosition(100,100,100); // Sender im Mittelpunkt 2D
  showSendePosition(100,100,0);    // Empfaenger C existiert nicht  1D
  
  
  return 0;
}

Nullsetzen der C-Signalstärke, bedeutet C ist nicht vorhanden und es 
liegt
der vom TO beschriebene Eindimenionale Fall vor.
Um korrekt zu sein müssen alle y-Koordinaten auf 0 gesetzt werden.
Dann sieht man das es der gleiche Algo ist, den der TO verwendet hat.
Deshalb verstehe ich nicht, warum folgender Beitrag negativ bewertet 
wurde.

R. M. schrieb:
> Im 1dimensionalen Fall sei A = 0  und B = 1.
>
> pA sei 0.5 und pB sei 0.5.
>
> Somit beschränkt sich "meine" Formel auf Skalare
>
> S = pA * A + pB * B
>   = 0.5 * 0 + 0.5 * 1
>   = 0.5
>  Das ist die Mitte zwischen A und B.

Ich habe nur die Prämissen seiner Simulation übernommen.
Das dies mit elektromagnetischer Wellenausbreitung in unserem Universum 
nicht funktioniert weis ich auch.
Aber der TO hat ja nicht mal geschrieben, das es sich um 
Elektromagnetische Wellenausbreitung handelt.

: Bearbeitet durch User
Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es wird implizit davon ausgegangen, dass es sich um Sender und Empfänger
>für Funkwellen handelt. Das hat der OP aber nie explizit geschrieben.

Gut, dann müssen wir warten, bis der OP das bestätigt oder verneint. 
Auch wenn eine 1/r²-Abhängigkeit naheliegt, darf man eine solche ja 
vorher nicht einfach annehmen und irgendetwas damit rechnen.

>Es hat eher etwas damit zu tun, dass es drei Gleichungen (drei Messwerte)
>und 6 Unbekannte gibt (Position des Senders, Signalstärke des Senders,
>Fehler der 3 Messungen).

OK. Aus "3 Gleichungen für 6 Unbekannte" würde ich die Unlösbarkeit der 
Aufgabe folgern. So schnell kann man mit einem Problem fertigwerden.

>Dazu kommen nahezu beliebige Korrelationen zwischen den Unbekannten

Verstehe ich nicht. Was meinst Du damit?

>und potenziell nicht normalverteile Messfehler.

Hört sich beängstigend an...

>Ich bin auf eine Lösung gespannt, die Messfehler beinhaltet und mit
>pq-Formel auskommt.

Mit den Messfehlern hast Du mich natürlich kalt erwischt. 
Allerspätestens wenn diese nicht normalverteilt sind, dürfte die 
pq-Formel definitiv nicht mehr ausreichen. Der Punkt geht an Dich :-)

Autor: georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
>>Dazu kommen nahezu beliebige Korrelationen zwischen den Unbekannten
>
> Verstehe ich nicht. Was meinst Du damit?

Die Gleichungen müssen voneinander unabhägig sein. Sonst könntest du ja 
jede von den 3 Gleichungen 2 mal hinschreiben, ev. auch mit einem Faktor 
multipliziert, und hättest deine 6 Bestimmungsgleichungen - aber so 
einfach ist es eben nicht.


LostInMusic schrieb:
> Auch wenn eine 1/r²-Abhängigkeit naheliegt, darf man eine solche ja
> vorher nicht einfach annehmen und irgendetwas damit rechnen

Nachdem hier eine endlose Diskussion um elektromagnetische Wellen oder 
nicht geführt wird, wüsste ich doch mal gern, welche Wellen sich im 
3D-Raum NICHT so ausbreiten. Wenn nämlich die Energie nicht mit der 
Zunahme der Kugeloberfläche mit dem entsprechenden Radius (und damit mit 
dem Quadrat des Radius) abnimmt, wäre das eine überaus elegante Methode, 
Energie aus dem Nichts zu erschaffen - unendlicher Reichtum wäre 
garantiert.

Georg

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Schalldruck (Amplitude) nimmt bei zuneh-
mender Entfernung von der Schallquelle mit 1/r ab.
Das ist das reziproke Abstandsgesetz 1/r.

Die Schallintensität (Energie) nimmt bei
zunehmender Entfernung von der Quelle mit 1/r² ab.
Das ist das reziproke Quadratgesetz 1/r².

https://de.wikipedia.org/wiki/Abstandsgesetz

Aber eine Diskussion darüber ist müßig, weil sich der TO nicht über die 
Physik seiner Simulation/Visualisierung ausläßt.
Er nennt die Frage auch kleines Matheproblem  und nicht 
Physikproblem.

Er postet auch in PC-Programmierung und nicht in HF,Funk und Felder.

Aufgrund des geposteten Programms (und das ist für mich der einzige 
Fakt) vermute ich, die gemessenen Signalstärken sind ganz einfach 
Zahlenwerte. (in seinem zweidimensionalen Simulationsuniversum)

Aber dazu kann sich der TO gerne äußern.

: Bearbeitet durch User
Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
georg schrieb:
> Wenn nämlich die Energie nicht mit der ...

Wenn nicht die Energie gemessen wird. Der OP spricht nur von "Signal". 
Ich persönlich gehe davon aus, dass er OP nach einer Lösung für 1/r² 
sucht, sich aber nicht über die komplexität des Problems bewusst 
ist/war.

georg schrieb:
> Die Gleichungen müssen voneinander unabhägig sein. Sonst könntest du ja
> jede von den 3 Gleichungen 2 mal hinschreiben, ev. auch mit einem Faktor
> multipliziert, und hättest deine 6 Bestimmungsgleichungen - aber so
> einfach ist es eben nicht.

Klar, einfach Gleichungen mehrfach aufschreiben geht nicht. Aber für 
eins der "Signale" eine weitere unabhängige Messung durchführen liefert 
eine 4. Gleichung. Aber wie unabhängig sind diese beiden Messungen für 
das Signal und daraus folgend, wie groß ist die Korrelation der 
zugehörigen Messfehler?

Was ich aber eigentlich meinte bezieht sich auf die anderen Unbekannten. 
Die x und y Koordinate und die Sendestärke des Senders. Aufgrund der 
Messfehler weichen diese Größen im Allgemeinen vom ihrem wahren Wert ab. 
Die Abweichungen von den wahren Werten können allerdings korreliert 
sein. Soetwas wie: "Immer wenn die bestimmte Signalstärke zu klein ist, 
ist x zu groß und y zu klein".

R. M. schrieb:
> Aufgrund des geposteten Programms (und das ist für mich der einzige
> Fakt) vermute ich, die gemessenen Signalstärken sind ganz einfach
> Zahlenwerte. (in seinem zweidimensionalen Simulationsuniversum)

Du hebst ja selbst das gemessen hervor. Eine Messung hat immer einen 
Fehler. Dieser Messfehler ist das Hauptroblem, weil der Wert der 
gesuchten Größen nur noch geschätzt (im statistischen Sinn, 
Erwartungswert) werden kann.

R. M. schrieb:
> Er nennt die Frage auch kleines Matheproblem  und nicht
> Physikproblem.

Es ist eben kein kleines Matheproblem, zumindest wenn man keine Ahnung 
von der Materie hat.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Dieser Messfehler ist das Hauptroblem, weil der Wert der
> gesuchten Größen nur noch geschätzt (im statistischen Sinn,
> Erwartungswert) werden kann.

Du redest von Messfehler und hast keine Ahnung welches Meßprinzip zu 
Grunde liegt. Oder hast du eine Glaskugel ?

Das gemessen ist  ironisch gemeint.

: Bearbeitet durch User
Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Wenn nicht die Energie gemessen wird.

Das ist eine Möglichkeit.

Eine andere ist, dass man einen ausgedehnten Sender hat und in dessen 
Nachbereich misst (meinetwegen eine Schallwelle vor der Membran eines 
Elektrostaten). Wenn der Elektrostat rechteckig ist, hast du einen 
Entfernungsbereich, wo die Schallleistung über die Entfernung 
näherungsweise konstant ist. Dann einen, wo sie näherungsweise mit 1/r 
abfällt. Und für große Entfernungen zur Quelle fällt sie dann endlich 
mit 1/r^2.

Schon im zitierten Wiki-Artikel zum Abstandsgesetz steht als zweiter 
Satz: "Voraussetzungen sind eine punktförmige Quelle (näherungsweise: 
kleine Ausdehnung der Quelle im Vergleich zur Entfernung), die isotrop, 
also nicht gerichtet emittiert, und ein freies Feld ohne reflektierende 
Berandung."

Ist die Quelle z.B. eine LED mit Linse (die nicht isotrop emittiert), 
dann fällt die Leistung zwar mit 1/r^2 ab, aber das r zählt nicht als 
Abstand zur LED sondern als Abstand zu einem hinter der LED liegenden 
Punkt.

Es lohnt sich bei der Sache also tatsächlich, vor der Rechnung zu 
klären, wie genau "das Signal" vom Abstand abhängt.

Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
R. M. schrieb:
> mh schrieb:
>> Dieser Messfehler ist das Hauptroblem, weil der Wert der
>> gesuchten Größen nur noch geschätzt (im statistischen Sinn,
>> Erwartungswert) werden kann.
>
> Du redest von Messfehler und hast keine Ahnung welches Meßprinzip zu
> Grunde liegt. Oder hast du eine Glaskugel ?

Nein natürlich habe ich keine Ahnung welches Meßprinzip zu Grunde liegt. 
Ich habe allerdings einiges an Erfahrung mit dem Prinzip "Messung" und 
mit inversen Problemen.


R. M. schrieb:
> Das gemessen ist  ironisch gemeint.
Tut mir leid, aber ich erkenne in deinem Text die Ironie nicht.
R. M. schrieb:
> Aufgrund des geposteten Programms (und das ist für mich der einzige
> Fakt) vermute ich, die gemessenen Signalstärken sind ganz einfach
> Zahlenwerte. (in seinem zweidimensionalen Simulationsuniversum)

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achim S. schrieb:
> Es lohnt sich bei der Sache also tatsächlich, vor der Rechnung zu
> klären, wie genau "das Signal" vom Abstand abhängt.

Ich dachte eigentlich das wäre geklärt.


Sneef schrieb:
> WR schrieb:
>> gehst Du davon aus, dass die empfangene Signalstärke linear mit dem
>> Abstand zusammenhängt oder gibt es da einen nichtlinearen Zusammenhang?
>
> Erst mal ja. Verkomplizieren kann ich es dann ja immernoch ;-)

Ich kann mich nur wiederholen:

R. M. schrieb:
> Aber dazu kann sich der TO gerne äußern.

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise, - und ich halte des für zweckmässig -, trennt man 
zunächst die prinzipiellen Überlegungen von der realen Anwendung. Man 
setzt also erst einmal ideale Bedingungen voraus und findet eine Lösung 
des Problems.

Und, erst wenn (und falls) das funktioniert, berücksichtigt man reale 
Gegebenheiten wie Genauigkeit, Auflösung etc. Egal was sich durchaus 
ergibt, bleibt das Prinzip dennoch gültig. Es ergeben sich allenfalls 
Flächen, - und bei stochastischen Einflüssen, solche mit einer 
Wahrscheinlichkeitsverteilung -, was nicht immer, aber in realen Fällen 
oft ausreicht.


Was die Frage 1/r oder 1/r^2 betrifft, ist die aus zwei Gründen meines 
Erachtens nach, in diesem Kontext irrelevant.

1. Das Lösungsverfahren (das im wesentlichen auf Pythagoras und den 
Ähnlichkeitssätzen beruht, wenn man die Verhältnisse der gemessenen 
Grösse voraussetzt) ist für beide Fälle anwendbar. Es ergibt sich für 
die Ortskurven eine Parabel 2ter Ordnung bzw. zwei Parabeln und eine 
Gerade.
2. Der TO hat selbst geschrieben, dass zunächst von einem linearen 
Zusammenhang ausgegangen werden soll. Siehe 
Beitrag "Re: Kleines Matheproblem (Positionsbestimmung)"

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klassisch geht es so:
Der Bogenschnitt (Bogenschlag) ist eine Methode zur Punktbestimmung in 
der Geodäsie.

https://de.wikipedia.org/wiki/Bogenschnitt

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Ich habe allerdings einiges an Erfahrung mit dem Prinzip "Messung" und
> mit inversen Problemen.

Das respektiere ich.
Ich bin Softwerkler mit elektrotechnischem Hintergrund.
Und wenn mir jemand mit folgender Problematik kommt, ohne weitere 
Hintergrundinformation zu liefern:
#include "stdafx.h"
#include  <algorithm>
#include <iostream>

// Both receivers are 1000mm apart
// Receiver A marks the origin
const int PosA = 0;
const int PosB = 1000;
const int Distance = PosB - PosA;

double GetPosition(int signalStrengthA, int signalStrengthB)
{
  // Nomalize the signal strengths
  double normalizedStrengthA = (double)signalStrengthA / std::max(signalStrengthA, signalStrengthB);
  double normalizedStrengthB = (double)signalStrengthB / std::max(signalStrengthA, signalStrengthB);

  // Compute the distance from receiver A based on the normalized signal strengths
  double ratio = normalizedStrengthA / (normalizedStrengthA + normalizedStrengthB);
  double distanceFromA = Distance - ratio * Distance;

  return distanceFromA;
}

void main()
{
  std::cout << GetPosition(100, 100) << std::endl; // Equal signal strength should yield exact center position (500)
  std::cout << GetPosition(200, 200) << std::endl; // Same as before => 500
  std::cout << GetPosition(500,   0) << std::endl; // Now we are located at receiver A => position 0
  std::cout << GetPosition(  0, 500) << std::endl; // Now we are located at receiver B => position 1000
  std::cout << GetPosition( 66,  33) << std::endl; // We are 1/3rd of the way => postion 333
}


// Bei drei Empfängern komme ich aber wie gesagt nicht weiter...(!!!!)





dann stehe ich mit 100% zu meiner Antwort:


// Erweiterung der obigen Loesung auf 2D

#include <iostream>
using namespace std;

// xy Koordinaten A B C
double Ax=-0.5;
double Ay=0;

double Bx=0.5;
double By=0;

double Cx=0;
double Cy=0.87;

void showSendePosition(double PegelA, double PegelB, double PegelC)
{
  double sum = PegelA + PegelB + PegelC;
  double pA = PegelA/sum;
  double pB = PegelB/sum;
  double pC = PegelC/sum;
  
  double Sx = pA * Ax + pB * Bx + pC * Cx;
  double Sy = pA * Ay + pB * By + pC * Cy;
  
  cout << Sx << "  " << Sy << endl; 
}

int main ()
{
  showSendePosition(100,100,100); // Sender im Mittelpunkt 2D
  showSendePosition(100,100,0);    // Empfaenger C existiert nicht  1D
  
  
  return 0;
}


Alles andere ist Wahrsagerei.

Autor: Sigi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Ich bin auf eine Lösung gespannt, die Messfehler beinhaltet und mit
> pq-Formel auskommt.

Meine Lösung von Gestern basiert quasi auf der pq-Formel
(Aufstellen und Umformen der Empfangskreisgleichungen zweier
Punkte ergibt eine einfachere pq-Variante). In den Bildern
sieht man die berechneten Punkte, wobei bei jeder Berechnung
je Messung Gauss-Rauschen mit sigma=0.025 hinzuaddiert wurde.
Die Roten Kreise haben r=Sigma bzw. r=2*Sigma, die Abstände
aller Treffer zum fixen Sender in [0.5,0.5] haben 1.15*sigma,
d.h. sind für mich akzeptabel. (die etwa 20% Abweichung
erhalte ich für sigma=0.0..0.3, wobei der Radius der drei
Empfänger 0.4 ist, aber ab sigma=0.01..0.02 ist das berechnete
Ergebnis eh nicht mehr interessant, da der Abstand zum Sender
zu gross wird)

Gestern sind mir noch den Dürchläufen Ausreiser aufgefallen,
die ich gerade noch behoben habe: Liegt der Sender in etwa
auf der Linie und werden die Längen der Empfänger ungünstig
gekürzt, dann haben mindestens 2 Empfangskreise keinen
Schnittpunkt mehr, d.h. keine Lösung. Ich setze dann den
berechneten Punkt gleich der gewichteten Mitte, wobei die
Gewichte gleich den verrauschten Distanzen ist (Heuristik,
über die man aber sprechen kann..).

P.S. Theor und X4U fassen noch mal gut die wesentlichen
Lösungsschritte zusammen.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist Gestern noch eine einfache Anwendung eingefallen:
Ende der 90er habe ich mir für 15DM vom Grabbeltisch eine
Art 3D-Scanner/3D-Maus gekauft. Am Bildschirm wurde ein
rechtwinkliger Rahmen mit 3 Empfängern befestigt, und in der
Hand hält man eine Art Maus mit einem Ultraschallsensor.
Aus der Signallauflänge ergab sich dann die 3D-Position
(Maus und Rahmen waren NICHT mit einem Kabel verbunden,
d.h. Impulsstart war nicht bekannt, nur die Ankunftszeitpunkte)

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@R. M.

Du hast das Programm des TO zwar so auf zwei Dimensionen erweitert, wie 
man sich denkt, dass es so sein müsste - trotzdem funktioniert die 
2D-Variante leider nicht! Deine beiden Testfälle 
"showSendePosition(100,100,100)" und "showSendePosition(100,100,0)" sind 
derart speziell, dass sie den Fehler nicht aufdecken. Aber wenn Du den 
Sender beispielsweise mal an die Position (0, 0) setzt und die 
Empfangsstärken ausrechnest (tu es!) und mit diesen Werten dann Dein 
Programm fütterst, dann wirst Du feststellen, dass als Ergebnis nicht 
(0, 0) herauskommt, sondern (0, 0.1).

Als nächstes kannst Du das dann mit ganz vielen Punkte in dem Dreieck 
machen und Dir anschauen, was für eine Figur die Ergebnispunkte bilden - 
es ist ein Teil des Dreiecks, aber nicht das ganze Dreieck, wie es sein 
müsste.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>showSendePosition(100,100,0);    // Empfaenger C existiert nicht  1D

Wie kommst Du auf "Empfaenger C existiert nicht"? Bei einer angenommenen 
linearen Abhängigkeit der Signalstärke P von der Entfernung r (welche 
Deinem Programm bzw. dem des TO zugrundeliegt) bedeutet die Signalstärke 
Null, dass der Sender vom Empfänger einen ganz bestimmten Abstand hat, 
nämlich jenen Abstand d, wo die lineare Funktion P(r) ihre Nullstelle 
hat.

Wenn der Empfänger vom Sender noch weiter als d weg ist, wird P sogar 
negativ. All diese schönen Effekte handelt man sich mit der Wahl einer 
linearen P(r)-Funktion ein.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
> Aber wenn Du den
> Sender beispielsweise mal an die Position (0, 0) setzt und die
> Empfangsstärken ausrechnest (tu es!) und mit diesen Werten dann Dein
> Programm fütterst, dann wirst Du feststellen, dass als Ergebnis nicht
> (0, 0) herauskommt, sondern (0, 0.1).

Das habe ich getan und kann dein Ergebnis bestätigen.
Um sinnvolle Werte zu erhalten habe ich das Dreieck vergrössert.
Der Abstand des Senders zu A sind 50km, zu B auch 50km und zu C 87km.
Auch das ist ein gleichseitiges Dreieck.
Als Sendeleistung habe ich 1 KW angenommen.
Mit der Formel für die Freiraumdämpfung aus dem Titze - Schenk habe ich 
mir dann die zu erwarteten Empfangsleistungen ausgerechnet und damit 
mein Programm gefüttert. Der Fehler liegt in der von dir beschriebenen 
Grössenordung.

Das liegt aber daran das die Formel für die Freiraumdämpfung 
richtigerweise auf 1/r² beruht.

Ich kann nicht einfach eine nichtlineare Formel aus der realen Welt 
nehmen und dann erwarten das damit eine lineare Simulation funktioniert.
Ok, dann kann man natürlich sagen, die Simulation taugt nichts.
Aber der TO hat nun einmal geschrieben, das er (vorerst) lineare 
Abhängigkeiten will.
Darum geht es mir.

LostInMusic schrieb:
>>showSendePosition(100,100,0);    // Empfaenger C existiert nicht  1D
>
> Wie kommst Du auf "Empfaenger C existiert nicht"?
Damit wollte ich zeigen das die ursprungliche, eindimensionale Lösung 
des TO in meinem Programm als Sonderfall enthalten ist. Korrekterweise 
muss man auch alle y-Koordinaten auf 0 setzen. Aber  das habe ich weiter 
oben schon erwähnt.

LostInMusic schrieb:
> Wenn der Empfänger vom Sender noch weiter als d weg ist, wird P sogar
> negativ. All diese schönen Effekte handelt man sich mit der Wahl einer
> linearen P(r)-Funktion ein.
Ja sicher, damit bin ich deiner Meinung.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich kann nicht einfach eine nichtlineare Formel aus der realen Welt
>nehmen und dann erwarten das damit eine lineare Simulation funktioniert.

Da hast Du mich gründlich missverstanden! Ich wollte Dir sagen, dass 
deine lineare 2D-Simulation nicht mit einer linearen P(r)-Abhängigkeit 
funktioniert (dass es mit einer 1/r^2-Abhängigkeit schiefgeht, ist 
sowieso klar).

Die Formel im 1D-Fall mit zwei Empfängern lautet:

x = (PA*xA + PB*xB)/(PA + PB)

Dabei ist nimmt die Signalstärke P mit dem Abstand linear ab:

P(r) = 1 - d/r

wobei d der Abstand der beiden Empfänger zueinander ist: d := |xB - xA|. 
Das ist die ganze Mathematik, auf der das Programm des TO basiert (der 
TO hat darin genau das codiert - allerdings auf eine umständliche Art). 
Sie stimmt und das Programm berechnet die korrekte Senderposition auf 
der x-Achse.

Du willst das jetzt auf die 2D-Situation "drei Empfänger in den 
Eckpunkten eines gleichseitigen Dreiecks" erweitern und denkst, dass die 
Senderposition dann ja wohl gegeben sein müsste durch:

x = (PA*xA + PB*xB + PC*xC)/(PA + PB + PC)
y = (PA*yA + PB*yB + PC*yC)/(PA + PB + PC)

Das ist aber ein Irrtum: Diese Ausdrücke liefern (mit Ausnahme von vier 
Punkten, nämlich den Dreieck-Eckpunkten sowie dem Dreieck-Mittelpunkt) 
falsche Senderpositionen!

Zum Beweis mache ich ein Rechenbeispiel:
Sei
(xA|yA) = (+0.5|0) und
(xB|yB) = (-0.5|0) und
(xC|yC) = (0|0.8660254)

Dieses ABC-Empfänger-Dreieck ist gleichseitig mit der Seitenlänge 1 (der 
krumme Wert 0.8660254 ist eigentlich 1/2*sqrt(3)).

Befindet sich der Sender im Punkt (1|0), soll Empfänger A die 
Signalstärke 1 und Empfänger B die Signalstärke 0 messen. Dadurch ist 
die P(r)-Funktion schon eindeutig festgelegt; es muss P(r) = 1 - r 
gelten, weil A und B gerade 1 voneinander entfernt sind.

Sitzt der Sender nun im Punkt (0|0), dann sind die Signalstärken wie 
folgt:
Empfänger A misst PA = 1 - 0.5 = 0.5,
Empfänger B misst PB = 1 - 0.5 = 0.5 und
Empfänger C misst PC = 1 - 0.8660254 = 0.1339746.

Damit liefert Deine Formel als Senderposition:

x = (0.5*0.5 + 0.5*(-0.5) + 0.1339746*0)/(PA + PB + PC) = 0
y = (0.5*0 + (0.5)*0 + 0.1339746*0.8660254)/(0.5 + 0.5 + 0.1339746) = 
0.102317465

Wie Du siehst, ist die y-Koordinate falsch, denn richtig wäre 0.

Man muss bei derartigen Verallgemeinerungen von 1D auf 2D (und ebenso 
von 2D auf 3D) sehr aufpassen, weil dabei manchmal etwas nicht glatt 
geht, obwohl man es intuitiv für richtig hält. Diese Sache hier ist ein 
gutes Beispiel dafür.

Autor: Theor (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin nicht sicher, dass ich den Kern der momentanen Diskussion 
wirklich verstehe. Ich habe nur den Eindruck, dass nicht ganz klar ist, 
an welcher Stelle in dem Problem nicht-Linearität auftritt und dass 
evtl. eine Skizze helfen könnte.

In der angehängten Skizze wird angenommen, dass das Verhältnis der 
Strecken zwischen A und Sender bzw. B und Sender 1 zu 2 ist.
Die gestrichelten Kreise haben jeweils A bzw. B als Zentrum.
Mit einem roten Kreis sind jeweils die Schnittpunkte zweier Kreise 
gekennzeichnet. Und zwar jener Kreise, deren Radien im Verhältnis 1 zu 2 
stehen.
Die rote Linie ist eine (etwas grob hingebogene) Bezier-Linie, die in 
etwa die Zwischenwerte approximieren soll.

Man kann erahnen, dass die Linie eine Parabel beschreibt. Was durch die 
Gleichungen von u.a. Markus und Ulrich bestätigt wird.

Man sieht auch, meine ich, dass die Frage, wenn sie denn eine Rolle in 
der Diskussion spielt, ob nun ein 1/r oder ein 1/r^2 Ausbreitungsgesetz 
anzuwenden ist (ich habe keinerlei Zweifel, dass 1/r^2 gilt), irrelevant 
ist, denn in jedem Fall ist letztlich nur das Verhältnis der Strecken 
wichtig. Und das ist in dem einen Fall eben lediglich AS/BS oder 
sqrt(AB/BS) wie übrigens u.a. Ulrichs Gleichungen.

Die Schlüsse daraus sind nicht unbedingt trivial.
Man mag irrigerweise spontan annehmen, dass die Orte, an denen das 
Verhältnis zwischen den Entfernungen AS und BS gleich ist, eine Gerade 
bilden. Aber das ist, wie die Grafik zeigen soll, nicht der Fall. 
(Unter anderem deswegen ist auch die von X4U vorgeschlagene Methode des 
Bogenschnittes nicht anwendbar).


Die Skizze ist mit DIA erstellt. Neben der Grafik hänge ich noch die 
Datei an, falls jemand damit spielen will.

Autor: R. M. (n_a_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
> Man muss bei derartigen Verallgemeinerungen von 1D auf 2D (und ebenso
> von 2D auf 3D) sehr aufpassen, weil dabei manchmal etwas nicht glatt
> geht, obwohl man es intuitiv für richtig hält. Diese Sache hier ist ein
> gutes Beispiel dafür.
Danke für die Aufklärung.
Da habe ich mir wirklich einen groben Schnitzer geleistet.

Autor: Sigi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> In der angehängten Skizze wird angenommen, dass das Verhältnis der
> Strecken zwischen A und Sender bzw. B und Sender 1 zu 2 ist.
> Die gestrichelten Kreise haben jeweils A bzw. B als Zentrum.
> Mit einem roten Kreis sind jeweils die Schnittpunkte zweier Kreise
> gekennzeichnet. Und zwar jener Kreise, deren Radien im Verhältnis 1 zu 2
> stehen.
> Die rote Linie ist eine (etwas grob hingebogene) Bezier-Linie, die in
> etwa die Zwischenwerte approximieren soll.
>
> Man kann erahnen, dass die Linie eine Parabel beschreibt. Was durch die
> Gleichungen von u.a. Markus und Ulrich bestätigt wird.

Alleine schon das Gefühl sollte einem sagen, dass hier
wahrscheinlich ein gebrochenpolynomiales Verhältnis vorliegt
(wegen der Kreise). Ich hab's gerade mal per Bestapproximation
durch ein Polynom von Grad=2 approximiert und starke Abweichungen 
festgestellt. Erst ab Polynomgrad grösser 4 ergibt visuell
akzeptable Übereinstimmung, d.h. ein Indiz für die Rationalität
(d.h. p/q, p,q: Polynome). Durch das Aufstellen der Gleichungen
wird das auch bestätigt.

Theor schrieb:
> Man sieht auch, meine ich, dass die Frage, wenn sie denn eine Rolle in
> der Diskussion spielt, ob nun ein 1/r oder ein 1/r^2 Ausbreitungsgesetz
> anzuwenden ist (ich habe keinerlei Zweifel, dass 1/r^2 gilt), irrelevant
> ist, denn in jedem Fall ist letztlich nur das Verhältnis der Strecken
> wichtig. Und das ist in dem einen Fall eben lediglich AS/BS oder
> sqrt(AB/BS) wie übrigens u.a. Ulrichs Gleichungen.
>
> Die Schlüsse daraus sind nicht unbedingt trivial.
> Man mag irrigerweise spontan annehmen, dass die Orte, an denen das
> Verhältnis zwischen den Entfernungen AS und BS gleich ist, eine Gerade
> bilden. Aber das ist, wie die Grafik zeigen soll, nicht der Fall.
> (Unter anderem deswegen ist auch die von X4U vorgeschlagene Methode des
> Bogenschnittes nicht anwendbar).

Deinem ersten Beitrag hier entnahm ich, dass du das
Problem richtig gelöst hast (bzw. der korrekte Ansatz),
hier negierst du aber die Lösung von X4U. Genau mit dessen
Ansatz habe ich aber bereits die korrekte Lösung gefunden,
siehe Skizze.

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Theor schrieb:
>> In der angehängten Skizze ...
>
> Alleine schon das Gefühl sollte einem sagen, [...]

Lassen wir das mit dem Gefühl vielleicht mal vorläufig aussen vor.
Siehst Du irgendeinen Fehler oder eine Abweichung von der 
Problemsituation in meiner Skizze?

Das aber hat vielleicht auch Zeit, denn das folgende scheint mir 
vielversprechender einen evtl. Fehler oder jedenfalls Unterschied 
zwischen unseren Verfahren festzustellen.

>
> Theor schrieb:
>> Man sieht auch, meine ich, dass [...]
>
> Deinem ersten Beitrag hier entnahm ich, dass du das
> Problem richtig gelöst hast (bzw. der korrekte Ansatz),
> hier negierst du aber die Lösung von X4U. Genau mit dessen
> Ansatz habe ich aber bereits die korrekte Lösung gefunden,
> siehe Skizze.

Ich denke zunächst nicht, dass es nur ein einziges korrektes Verfahren 
gibt. Mag sein, dass meines komplizierter als nötig ist. Mag aber auch 
sein, dass meines in gewisser Hinsicht allgemeiner ist.

Es würde mir, denke ich, helfen, wenn Du Deine Skizze erläuterst.
Vermutlich gehen die Einzelheiten aus Deinen bisherigen Beiträgen schon 
hervor, aber ich wäre Dir dankbar, wenn Du zusammen mit der Erläuterung 
der Skizze, Dein Verfahren noch einmal konzentriert erläuterst.

Konkret würde ich mir eine Erläuterung darüber wünschen, wie Du die 
Radien der blauen Kreise bestimmst. Und was die Voraussetzungen sind.

Ich möchte an dieser Stelle meine eigene, wie ich meine zentrale, 
Annahme nennen:
Es wird von den Empfängern jeweils eine Feldstärke, Leistung oder 
vergleichbares gemessen. (Die Wahl wirkt sich "nur" auf das anzuwendende 
Abstandsgesetz aus). Jedoch ist diese Messung nicht absolut.
Ich setze nur voraus, dass, bei gleicher Entfernung zum Sender, 
konstanter Sendeleistung, und perfekter radialer Abstrahlung, alle 
Empfänger in jeder Richtung, den gleichen Wert messen.
Die Leistung des Senders muss nicht bekannt sein. Nur die vom TO 
genannte Voraussetzung, dass die Sender alle gleichzeitig messen, muss 
gegeben sein.

Wenn ich Deiner Erklärung vorgreifen darf, dann vermute ich, dass Du im 
Gegensatz zu mir, davon ausgehst, dass Deine Empfänger die Leistung 
(oder welches dazu proportionale Maß auch immer) absolut messen und die 
Leistung des Senders bekannt ist. Ich vermute dass, weil ich mir eine 
andere Methode die Radien Deiner Kreise, skaliert auf absolute Längen, 
zu bestimmen im Moment nicht vorstellen kann. Vermute ich richtig?

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sigi

Ah. Ich sehe gerade, dass Du es hier 
Beitrag "Re: Kleines Matheproblem (Positionsbestimmung)" schon 
erläutert hast.

Ist mir entfallen. Mein Fehler.

Unter den Voraussetzungen einer absoluten Messung und bekannter 
Sendeleistung, funktioniert Dein Verfahren. Und natürlich das von X4U.


Lasse ich die absolute Messung fallen, dann funktioniert mein Verfahren 
immer noch.
Wenn ich keine absolute Messung brauche, dann kann ich das Geld für die 
Referenz stattdessen für mehr Marzipan ausgeben. :-)


Nun, ich hoffe Deine Frage ist damit geklärt.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> Lassen wir das mit dem Gefühl vielleicht mal vorläufig aussen vor.

Das sollte keinesfalls in irgendeiner Form beleidigend
sein, ich hatte gedacht, dass das mit der gebrochenrationalen
Form iE klar sein sollte. Z.B. lassen sich perspektivischen
Projektion in der Form (ax+b)/(cx+d) beschreiben (gebr.rat.
vom Grad 1,1), bei Kreisschnitten erhält man schnell
Formen wie (ax^2+bx+c)/(dx^2+ex+f) oder je nach Lage
höhergradig, soll hier aber auch kein Thema sein.

Theor schrieb:
> Siehst Du irgendeinen Fehler oder eine Abweichung von der
> Problemsituation in meiner Skizze?

Nein, eben nicht, die Skizze ist korrekt. Fügst du noch einen
3. Empfänger hinzu, dann sollte sich idR für alle deine
Kreiskombinationen ein Sender finden lassen derart, dass er
einer der beiden Kreisschnittpunkte ist. Dass die von dir
eingezeichneten Kurve keine "exakte" Parabel ist, spielt
keine Rolle, wichtig ist ja, dass sie keine Gerade ist, d.h.
keine Linearität vorliegt.
(Linearität: Du hast die Entfernungen und kannst daraus per
linearer Form, z.B. der obigen baryzentrischen Kombination
den Sendepunkt bestimmen. Habe ich ja auch weiter Oben
versucht, aber bis auf Sender in etwa der Mitte grosse
Abweichungen erhalten. Ausserdem hat der baryzentrische
Ansatz viele Fehler, wie sie ja zT schon beschrieben wurden)

Theor schrieb:
> Ich denke zunächst nicht, dass es nur ein einziges korrektes Verfahren
> gibt. Mag sein, dass meines komplizierter als nötig ist. Mag aber auch
> sein, dass meines in gewisser Hinsicht allgemeiner ist.

Da muss ich dir recht geben. Ich war so sehr in einem Teilproblem
meiner Lösung verbohrt, dass ich mir über eine Alternativlösung
keine Gedanken mehr gemacht hatte. Ich habe gerade noch einen
zweiten, einfacheren (je nach Betrachtung) Ansatz umgesetzt,
der auf Iteration ähnlich der Newton-Iteration basiert. Dazu
berechne ich den aktuellen Abstand eines Punkts zu den Empfängern
und versuche diesen dann so zu korrigieren, dass die drei
Abstände Richtung Abstände zum Sender konvergieren. Die
Konvergenzrate ist in etwa O(log(n)).

Theor schrieb:
> Es würde mir, denke ich, helfen, wenn Du Deine Skizze erläuterst.
> ...
> Konkret würde ich mir eine Erläuterung darüber wünschen, wie Du die
> Radien der blauen Kreise bestimmst. Und was die Voraussetzungen sind.

"Sender" ist klar, "R0".."R2" sind die Empfänger, "Hit" die berechnete
Senderposition, die Radien der Kreise sind die Abstände "Ri"-"Sender"
(sehr wichtig: hier habe ich mich aus der Diskussion 1/r, 1/r^2 etc.
rausgeschlichen, ich haber aber Oben schon geschrieben, dass die
Empfangsleistung auf eine Abstandsskala umrehenbar sein muss.
Genaueres lässt der TO ja offen.)
Zwei Kreise schneiden sich in 0,1 oder 2 Punkten (rot eingezeichnet),
die grüne/gelbe und türk. Linie stellen ein lokales Koord.System
da, wobei Gelb ins Dreieck, Türkis aus dem Dreieck zeigt.
In der Skizze ist "Hit" gleich den zusammenfallenden Endpunkte
der gelben Linie, es kann aber auch jede beliebige Kombination
aus gelben und türk. Linien sein, je nachdem, ob der Sender im
Dreieck oder Ausserhalb liegt (d.h. 8 Suchvorgänge nach den
besten Tripel).

Theor schrieb:
> Wenn ich Deiner Erklärung vorgreifen darf, dann vermute ich, dass Du im
> Gegensatz zu mir, davon ausgehst, dass Deine Empfänger die Leistung
> (oder welches dazu proportionale Maß auch immer) absolut messen und die
> Leistung des Senders bekannt ist. Ich vermute dass, weil ich mir eine
> andere Methode die Radien Deiner Kreise, skaliert auf absolute Längen,
> zu bestimmen im Moment nicht vorstellen kann. Vermute ich richtig?

Genau für diesen (sehr wichtigen!!) Punkt hatte ich am Sonntag
auch ein kleines Skript aufgesetzt. In meinen Zeichnungen
bzw. der SW dahinter tauchen nur Abstände auf, keine
Empfangsleistung oÄ. Du hast aber alle 3 (relativen) Leistungen
zu einem Zeitpunkt, und damit kannst du die absoluten Abstände
berechnen. Dazu habe ich per Zufall den Sender positioniert,
per Zufall die Sendeleistung festgelegt, damit die Abstände
berechnet und dann mit den tatsächlichen Abständen zum Sender
verglichen (wichtig: hier habe ich die Form 1/R^2 gewählt,
1/R sollte aber auch kein Problem sein).
Aber das ist auch genau mein erster Gedanke gewesen, das
Sendeleistungsproblem, die geometrische Berechnung und dann
das Rauschen möglichst voneinander zu trennen.

(uff, am Sonntag hatte ich die Formeln und die SW in 20-30 Minuten
runtergeschrieben, für eine ausführliche Erklärung aller Bilder
würde ich wesentlich länger brachen, deswegen verzichte ich hier
darauf)

Autor: Theor (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das hat mir nun keine Ruhe gelassen, und ich habe mal geplottet, was 
dabei herauskommt.

Witziger Weise hatten wir beide in gewisser Weise unrecht. Das ist keine 
Parabel oder wie ich auch dachte eine Hyperbel. Jedenfalls kommt keine 
gebrochen rationale Funktion mit x im Nenner heraus. Vielmehr unter 
anderem die vierten Potenzen von Zähler und Nenner des Verhältnisses der 
Strecken aus der dann noch die Wurzel gezogen wird. Hübsch hässliche 
Formel - hübsch hässlicher Graph. :-)

Das ganze wird an den Rändern komplex und sieht insgesamt eher wie die 
Abschnitte einer Ellipse aus - nur das die Lücken eine Gerade mit x = 
irgendwas sind - ab da werden die Lösungen komplex. Hätte ich nicht 
erwartet.
Naja. Muss ich noch gründlich überprüfen ob ich da nicht irgendwo Mist 
gebaut habe. Aber einmal habe ich schon über Formel drübergeschaut, 
nachdem ich die Plots gesehen habe.

Die Bilder folgen im wesentlichen meiner Skizze. Der Abstand u der 
Empfänger ist 12 Einheiten. Der Empfänger A ist an der Position x = 0 
und y = 10 zu denken.

v und w sind das Streckenverhältnis. Der Dateiname gibt jeweils v, w und 
u an. v und u bleiben konstant.

Sieht aber irgendwie interessant aus. :-)

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lapsus!

Der Empfänger A ist an der Position x = 0 und y = 12 zu denken - nicht 
10.
B übrigens an x = 0 und y = 0.

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sigi

Was mich dann aber doch irritiert:

Du schreibst: "In meinen Zeichnungen bzw. der SW dahinter tauchen nur 
Abstände auf, keine Empfangsleistung oÄ. Du hast aber alle 3 (relativen) 
Leistungen zu einem Zeitpunkt, und damit kannst du die absoluten 
Abstände
berechnen."

Es müssen doch Entfernungen proportional zur Leistung markiert sein. An 
sich habe ich Dich auch so verstanden, dass das der Fall ist.

Und vor allem:
Um eine absolute Entfernung auszurechnen, brauchst Du absolute Daten. 
Relative reichen da nicht, meine ich.

Nach welchem Prinzip machst Du das genau?

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, da ist eine Lösung einer Wurzel beim umformen unter den Tisch 
gefallen. Hoppla! Es gibt insgesamt vier Lösungen und nicht nur zwei. 
Na, jetzt habe ich keine Lust mehr. Ein andermal.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Um eine absolute Entfernung auszurechnen, brauchst Du absolute Daten. Relative 
reichen da nicht

Nicht unbedingt. Das kann man sich leicht am 1D-Fall klarmachen:

Zwei "baugleiche" (*) Empfänger A und B mögen auf der x-Achse an den 
Koordinaten +1 bzw. -1 sitzen. Der Sender befindet sich irgendwo 
dazwischen an der Position x. Die Empfangsstärken, mit der A und B das 
Signal empfangen, seien PA und PB. Um die Senderposition zu bestimmen, 
muss man nun nicht die absoluten Werte von PA und PB kennen, sondern es 
reicht, zu wissen, wie groß der Quotient PB/PA ist.

Nimmt man P(r) ~ 1/r² an (r = Abstand Sender-Empfänger), dann befindet 
sich der Sender an der Position

Herleitung: A ist vom Sender a = 1 - x weit entfernt, B ist vom Sender b 
= 1 + x weit entfernt. Aus P(r) ~ 1/r² folgt PB/PA = a^2/b^2, also ist 
a/b = sqrt(PB/PA) = sqrt(theta). a und b eingesetzt führt auf die 
Gleichung sqrt(theta) = (1 - x)/(1 + x) und die lässt sich leicht nach x 
auflösen mit obigem Ergebnis.

In der 2D-Entsprechung ist es genauso: Man muss nicht die absoluten 
Werte von PA, PB und PC kennen, sondern es genügt zu wissen, wie groß 
PA/PC und PB/PC sind. Daraus kann man die Senderposition berechnen, 
sofern sich der Sender innerhalb des Umkreises des Dreiecks ABC 
befindet.

Wer sich davon überzeugen will, kann ja mal versuchen, das 
Gleichungssystem

a^2 = (x - 1)^2 + y^2
b^2 = (x + 1)^2 + y^2
c^2 = (x - xC)^2 + (y - yC)^2
alpha = c^2/a^2
beta  = c^2/b^2

aufzulösen (bekannt sind xC, yC, alpha = PA/PC und beta = PB/PC; 
unbekannt sind x, y, a, b, c). Mehr muss man ja nicht machen.

___________
(*) "Baugleichheit" der Empfänger bedeutet, dass bei gleicher Entfernung 
vom Sender auch die Empfangsstärken gleich groß sind, d. h. aus a = b 
folgt PA = PB und umgekehrt.

Autor: Theor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
>>Um eine absolute Entfernung auszurechnen, brauchst Du absolute Daten. Relative
> reichen da nicht
>
> Nicht unbedingt. Das kann man sich leicht am 1D-Fall klarmachen:
>
> [...]

Das ist ein Missverständnis, denke ich. Meine Frage bezog sich auf den 
ersten Schritt von Sigis Methode.
Sie bezog sich nicht auf das Gesamtproblem, dass selbstverständlich 
darauf hinausläuft, die Entfernung von den Empfängern zu dem Sender zu 
bestimmen.

Was Du da beschreibst, ist von einigen Antwortenden und unter anderem 
von mir beschrieben worden.

Theor schrieb:
> [...]
>
> [...] denn in jedem Fall ist letztlich nur das Verhältnis der Strecken
> wichtig. Und das ist in dem einen Fall eben lediglich AS/BS oder
> sqrt(AB/BS) wie übrigens u.a. Ulrichs Gleichungen.
> [...]

Das ist also an sich klar, denke ich, dass es auf diese Weise geht.

Ich sah in Sigis Aussage: "In meinen Zeichnungen bzw. der SW dahinter 
tauchen nur Abstände auf, keine Empfangsleistung oÄ. Du hast aber alle 3 
(relativen) Leistungen ..." einen inneren Widerspruch. (Inzwischen habe 
ich meine Ansicht geändert. Siehe letzter Absatz.)

Denn, anders als bei unserem (Ulrichs, Deinem, Meinem) Ansatz, beruht 
Sigis Methode darauf, dass er im ersten Schritt aus den bekannten 
absoluten Sende- und Empfangsleistungen eine absolute Entfernung 
berechnet, damit im zweiten Schritt Kreise mit einem absoluten Radius um 
die Empfänger zieht und im dritten Schritt deren Schnittpunkte bestimmt.

Ich fürchte ich habe Sigis Satz, den ich hinterfragt habe, aus einer 
falschen Perspektive interpretiert.
Meiner jetzigen Ansicht nach, bezog er sich mit "relativ" nicht auf die 
Relation der Leistungen zwischen zwei Empfängern sondern auf die 
paarweise Relation der Relationen(!) der Leistungen zw. zwei Empf. - 
also auf die Schnittpunkte der Kreise.
Das wäre konsistent mit seinen restlichen Aussagen. (Vielleicht hätte er 
das etwas prägnanter ausdrücken können. Aber man [einschliesslich mir] 
vertut sich da eben manchmal. Meinem eigenen Satz, den ich gerade 
zitiert habe, finde ich auch nicht mehr prägnant genug.)

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich fürchte ich habe Sigis Satz, den ich hinterfragt habe, aus einer
>falschen Perspektive interpretiert.

Kommt in den besten Familien vor... smile

Mathematisch ausgedrückt:

Empfänger A misst die Signalstärke PA = f/a^2,
Empfänger B misst die Signalstärke PB = f/b^2,
Empfänger C misst die Signalstärke PC = f/c^2,

wobei a/b/c die Abstände der Empfänger A/B/C zum Sender sind. In der 
Größe f steckt die Leistung des Senders, welche nicht bekannt ist. 
Deshalb ist es unmöglich/"verboten", irgendetwas mit f zu rechnen.

Danke für Deine Antwort. Ich fange an, zu verstehen, welche Lösungsideen 
ihr da verfolgt.

Autor: LostInMusic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sigi:

>Du hast aber alle 3 (relativen) Leistungen
>zu einem Zeitpunkt, und damit kannst du die absoluten Abstände
>berechnen. Dazu habe ich per Zufall den Sender positioniert,
>per Zufall die Sendeleistung festgelegt, damit die Abstände
>berechnet und dann mit den tatsächlichen Abständen zum Sender
>verglichen (wichtig: hier habe ich die Form 1/R^2 gewählt,
>1/R sollte aber auch kein Problem sein).

OK, dazu hast Du in Deinem Skript bestimmte Formeln codiert. Welche? 
Würde mich echt interessieren.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LostInMusic schrieb:
> OK, dazu hast Du in Deinem Skript bestimmte Formeln codiert. Welche?
> Würde mich echt interessieren.

Einfacher Ansatz: Lege das gleichseitige Dreieck in
ein Koordinatensystem so, das der 1. Punkt = (-alpha,0),
der 2. Punkt = (alpha,0) und der 3. Punkt = (0,beta) ist.
Für die Schnittgleichungen erhält man dann:

G1: (x+alpha)^2  + y^2        = r1^2
G2: (x-alpha)^2  + y^2        = r1^2
G3: x^2          + (y-beta)^2 = r3^2

Je Punktepaar kannst du dann die Schnittpunkte per
Subtraktion der Gleichungen Gi,Gj bestimmen, inden
du zuerst nach x umstellst und dann y ausrechnest
(geht auch umgekehrt, zuerst y, dann x).
Da du nur 2 Paare betrachten musst (man muss sich
mathematiscch klar machen, warum!), erhalte ich
durch simple Auswahl G3-G1, G3-G2. Daraus erhalte
ich dann ein X und damit EIN Y (warum EIN?, sollte
klar sein!).
Statt r1,r2,r3 kann man jetzt s*r1,s*r2,s*r3 nehmen.
Bei der Auflösung nach z.B. Y wie gerade Beschrieben
erhält man eine (wegen der Eindeutigkeit) Gleichung
für S.

Viel Spass beim Rechnen.

P.S. Da ich die beiden Probleme getrennt gelöst habe
(zuerst das Schnittpunktproblem und dann das
Sendestärkeproblem) ist mir erst im Nachhinein
klar geworden, dass man mit den Gleichungen G3-G1
und G3-G2 den Schnittpunkt als auch die Sendestärke
gleichzeitig lösen kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.