Ich stehe Mathematisch gerade völlig auf dem Schlauch :-D Gegeben: Ich habe einen Tacho mit vollem Radius von 360°. Auf diesem ist die Geschwindigkeit nichtlinear verteilt. Kann ich diese Nichtlinearität berechnen? Ich finde schon schwer das "Problem" korrekt auszudrücken. Die Geschwindigkeit verteilt sich auf 800 Knoten. Auf den ersten ~90° des Tachos sind es 150 Knoten, auf ~120° sind es dann 200 Knoten usw... Ich gebe am besten mal ein Bild mit, da sieht man es besser wie ich das meine. Wie kann ich dies am besten Berechnen? Ich brauche eure Intelligenz :-D
:
Bearbeitet durch User
Ich würde ganz klassisch Bleistift und Millimeterpapier benutzen. Auf die Skala ein Winkelgradskala zeichnen und Werte ablesen. Die Winkel auf der Horizontalen, die Skalenwerte auf der Vertikalen, dann die verbinden. Das ergibt eine Gerumme, (krumme Gerade), für die man dann eine Näherungsformel bestimmt. Dazu sollte man Anleitungen im Web finden.
Rene K. schrieb: > Nichtlinearität berechnen Was soll die Berechnung bringen? Für solche Aufgaben gibt es "Fitfunktionen", mit denen man eine Näherungsgerade findet. Klassisch auf linearem, halblogarithmischem, umgekehrt halblogarithmischem und doppeltlogarithmischem Papier, damit war man früher mal zufrieden. Eine Tabellenkalkulation wie Excel oder Libre Office Calc kennt sicher solche Fitfunktionen und kann sie auf dem Bildschirm darstellen. LINEST scheint dazu gedacht zu sein: https://wiki.documentfoundation.org/Documentation/Calc_Functions/LINEST Calculates the straight line that best fits a supplied data set and optionally returns detailed statistics on the regression. oder auch LOGEST: https://wiki.documentfoundation.org/Documentation/Calc_Functions/LOGEST/de oder vielleicht das: https://extensions.libreoffice.org/en/extensions/show/improved-trend-lines
:
Bearbeitet durch User
H. H. schrieb: > https://de.wikipedia.org/wiki/Prandtlsonde Ich weiß jetzt auch nicht wie mir die Funktionsweise der Staudruckröhre mit dem Problem der Skala helfen könnte. Mir ist bewusst wie die Arbeitsweise einer Staudruckröhre ist. Christoph db1uq K. schrieb: > Ich würde ganz klassisch Bleistift und Millimeterpapier benutzen. Auf > die Skala ein Winkelgradskala zeichnen und Werte ablesen. Jaaaa... so ähnlich habe ich das nun auch gemacht. Ich habe mir die Winkel der 100er Stellen ausgemessen und habe mir eine LUT Tabelle daraus gemacht. Die Zwischenschritte Interpoliere ich. Klappt ganz wunderbar.
1 | typedef struct {
|
2 | float value; // 0..800 |
3 | float angle; // Grad |
4 | } ScalePoint; |
5 | |
6 | ScalePoint scale[] = {
|
7 | { 0, 0 },
|
8 | { 100, 35 },
|
9 | { 200, 139 },
|
10 | { 300, 193 },
|
11 | { 400, 231 },
|
12 | { 500, 263 },
|
13 | { 600, 291 },
|
14 | { 700, 314 },
|
15 | { 800, 336 }
|
16 | }; |
17 | |
18 | #define SCALE_COUNT (sizeof(scale)/sizeof(scale[0])) |
19 | #define DEG_OFFSET |
20 | |
21 | float interpolSpeedToAngel(float value) |
22 | {
|
23 | // Begrenzen |
24 | if (value <= scale[0].value) |
25 | return (scale[0].angle)+DEG_OFFSET; |
26 | |
27 | if (value >= scale[SCALE_COUNT - 1].value) |
28 | return (scale[SCALE_COUNT - 1].angle)+DEG_OFFSET; |
29 | |
30 | // Passendes Segment suchen |
31 | for (int i = 0; i < SCALE_COUNT - 1; i++) |
32 | {
|
33 | if (value >= scale[i].value && value <= scale[i + 1].value) |
34 | {
|
35 | float v0 = scale[i].value; |
36 | float v1 = scale[i + 1].value; |
37 | float a0 = scale[i].angle; |
38 | float a1 = scale[i + 1].angle; |
39 | |
40 | float t = (value - v0) / (v1 - v0); |
41 | return (a0 + t * (a1 - a0))+DEG_OFFSET; |
42 | } |
43 | } |
44 | |
45 | return 0.0f; // sollte nie passieren |
46 | } |
So, jetzt ab ins Bett... bin Hundemüde :-D Dankeschön für den Denkanstoß.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.


