WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Funktion erstellen, die meinen Fehler korrigiert

 

Homer10
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 10:29     Titel: Funktion erstellen, die meinen Fehler korrigiert
  Antworten mit Zitat      
Hey,

nachdem mir das letzte mal gut geholfen wurde, versuchen ich es ein erneut.
Ich habe folgendes vor:

-Soll und Istwert werden miteinander geteilt(y-Achse)
-Bestimmter Werte als vektor x(x-Achse)

Die Kurve habe ich mir anzeigen lassen und diese schwankt um den Wert eins. Der Optimale Wert wäre natürlich 1. Jetzt versuche eine Funktion zu erstellen, die den Fehler korrigiert.
Kann mir da jemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen


Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 11:52     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler bei einem Soll/Istwertvergleich ist immer die Differenz. Die Fehlerkorrektur könnte also z.B. so ablaufen
Code:

function istwert_korrigiert = Fehlerkorrektur(sollwert,istwert)
    fehler = sollwert - istwert;
    istwert_korrigiert = istwert + fehler;
end
 


Diese Funktion rufst du z.B. so auf:
Code:
sollwert = [2 3 4 5];
istwert = [1 6 2 9];
istwert_korrigiert = Fehlerkorrektur(sollwert, istwert);



Dann ist der Sollwert (sollwert) gleich dem Istwert (istwert_korrigiert) und die Division zwischen Soll-und Istwert ist dann immer 1.
Hast du soetwas gemeint?

Gruß Tom
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 12:25     Titel:
  Antworten mit Zitat      
Danke!

Sorry, ich habe es etwas falsch ausgedrückt. Ist nicht so einfach zu erklären.
Mein Sollwert soll durch den Istwert geteilt werden.

So in der Art wird die Kurve aussehen:
Istwert=[1.05 0.98 1.1 ];
Sollwert=[1 1 1];
x-Wert=[1 2 3];

ergebnis=Sollwert./Istwert;
plot(x,ergebnis)


Die Kurve schwankt somit um den Wert 1.
Der Optimale Wert ist 1. Also eine kontante mit dem Wert 1 wäre ein Fehlerfreies System

Ich möchte nun eine Korrekturfunktion erstellen, die das Ergebnis um den auftretenden Fehler korrigiert

Ich hoffe es ist verständlich?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.11.2016, 13:18     Titel:
  Antworten mit Zitat      
Hallo Homer10,

Was meinst Du mit "Korrektur-Funktion"? Wenn die Werte alle 1 ergeben sollen, könnte diese Funktion ja sein, jeden Wert durch sich selbst zu teilen, oder mit 0 zu potenzieren oder Wert-1 davon abzuziehen. Es gibt also unendlich viele Funktionen, die aus einem Vektor aus beliebigen Zahlen einen Vektor aus Einsen macht.

Was ist also aus mathematischer Sicht dein Ziel?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 14:09     Titel:
  Antworten mit Zitat      
Im übrigen ist mein Sollwert in der realität nebenfalls nicht genau 1, also könnte auch
Sollwert=[1.01 0.95 0.99] heißen.

Wir haben eine kurve, die aufgrund von Fehlern vom optimalen Wert von 1 abweicht. Gibt es sozusagen eine Funktion bzw. wie lautet die Funktionen, die die Abweichung korrigiert, sodass der optimale Wert von 1 rauskommt.

Ich weiß nicht wie ich es anders erklären kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 14:36     Titel:
  Antworten mit Zitat      
Also auf deine Frage gibt es, wie Jan schon sagte, unendlich viele Lösungsmöglichkeiten.

Denn du hast eine Funktion (die sich ja bei dir aus der Division von Soll zu Ist-Wert ergibt), z.B.
Code:

f = [1.01 1 0.99 1.05 0.8 1.14]

und was du aber haben möchtest ist
Code:
f_wunsch = [1 1 1 1 1 1]


Ein paar Beispiele um auf deine gewünschte Lösung zu kommen:
Code:
f_wunsch = f.^0; %1. Möglichkeit
f_wunsch = f*0+1; %2. Möglichkeit
f_wunsch = f./f; %3.Möglichkeit
f_wunsch = f+1-f %4. Möglichkeit
f_wunsch = ((sin(0)^2+cos(0)^2)*2-sqrt(2)^2)*f+1e4^0; %5.Möglichkeit ;-)
... usw.


Es kommt bei jeder Möglichkeit, "der optimale Wert von 1 raus", also genau das, was du haben möchtest.

Gruß Tom
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 25.11.2016, 14:46     Titel:
  Antworten mit Zitat      
Homer10 hat Folgendes geschrieben:
Gibt es sozusagen eine Funktion bzw. wie lautet die Funktionen, die die Abweichung korrigiert, sodass der optimale Wert von 1 rauskommt.


Die Funktion mit der Abweichung von eins wäre das Odds Ratio [-1,1].
Code:
1 - Sollwert./Istwert

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))

Zuletzt bearbeitet von Mmmartina am 25.11.2016, 14:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 14:47     Titel:
  Antworten mit Zitat      
Wenn ich beispielweise 4.Möglichkeit nehme

Das sieht aus, als würde ich mich selbst verarschen. Dann kann ich doch f gleich weglassen, wenn ich es substrahiere?

Das ist wie, wenn ich abnehmen will und ein Tag kein Wasser trinke, dann wiege ich zwar weniger aber mein Fett ist immer noch da.
Verstehe ich was falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 15:07     Titel:
  Antworten mit Zitat      
Tom_Gast hat Folgendes geschrieben:
Also auf deine Frage gibt es, wie Jan schon sagte, unendlich viele Lösungsmöglichkeiten.

Denn du hast eine Funktion (die sich ja bei dir aus der Division von Soll zu Ist-Wert ergibt), z.B.
Code:

f = [1.01 1 0.99 1.05 0.8 1.14]

und was du aber haben möchtest ist
Code:
f_wunsch = [1 1 1 1 1 1]


Ein paar Beispiele um auf deine gewünschte Lösung zu kommen:
Code:
f_wunsch = f.^0; %1. Möglichkeit
f_wunsch = f*0+1; %2. Möglichkeit
f_wunsch = f./f; %3.Möglichkeit
f_wunsch = f+1-f %4. Möglichkeit
f_wunsch = ((sin(0)^2+cos(0)^2)*2-sqrt(2)^2)*f+1e4^0; %5.Möglichkeit ;-)
... usw.


Es kommt bei jeder Möglichkeit, "der optimale Wert von 1 raus", also genau das, was du haben möchtest.

Gruß Tom


Wenn ich das so mache wie das Tom beschrieben hat, dann brauche ich auch keine Messergebnisse oder. Ich glaube so wie ich das vor hatte wird es nicht funktionieren.

Ich muss eine andere Lösung finden, eine die sich nicht auf den Wert 1 bezieht, sondern auf dem Sollwert.

Da müsste dann eigentlich ähnlich sein von der Programmierung?!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.11.2016, 17:14     Titel:
  Antworten mit Zitat      
Hallo Homer10,nktionieren.

Zitat:
Ich muss eine andere Lösung finden, eine die sich nicht auf den Wert 1 bezieht, sondern auf dem Sollwert.
Da müsste dann eigentlich ähnlich sein von der Programmierung?!

Ähnlich wie was? Es ist egal, ob Du auf einen "Sollwert" oder auf eine fixe Zahl zusteuerst: Es gibt immer unednlich viele Wege um von einer Zahlen-Reihe auf eine andere zu kommen. Darum ist es für die Beantwortung Deiner Frage nötig zu wissen, was denn Dein Ziel ist. Wozu soll diese Funktion dienen? Möchtest Du vielleicht ein Rausch-Spektrum analysieren? Oder systematische Abweichungen feststellen, die die Form einer Sinus-Schwingung haben? Oder dient das zur Fuzzy-Steuerung?

Mit diesen Informationen könnte man aus den unendlichen vielen Möglichkeiten die jenigen auswählen, die das Problem mathematisch erfassen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2016, 17:32     Titel:
  Antworten mit Zitat      
Ich möchte die systematische Abweichung bestimmen. Eigentlich eine Funktion erstellen der diesen Fehler korrigiert.

Wie genau das gehen soll ist mir noch leider ein Rätsel
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.11.2016, 01:15     Titel:
  Antworten mit Zitat      
Sorry, ich kann's mir bei der Überschrift nicht verkneifen:
Wenn ihr eine Funktion kennt, die auch meine Fehler (ein paar wären schon gut, alle natürlich noch besser) korrigiert, dann gebt sie mir bitte :)

Und nun ernsthaft: sinnvoll wäre meines Erachtens die Aufgabenstellung
sollwert = f(istwert)
wobei f eine Funktionsschar mit zu bestimmenden Parameter(n) ist. Das ließe sich dann als Curve-Fitting-Problem auffassen und auf diese Weise lösen.

Letztlich ist das aber auch nur geraten: wenn die Aufgabenstellung nicht klar ist, dann sollte man sich m.E. an den Aufgabensteller wenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2016, 10:13     Titel:
  Antworten mit Zitat      
Hallo,

ich wollte den Code von Tom seinen esten Beitrag in Matlab eingeben. Wie ist es denn möglich die Funktion in Matlab einzugeben? Brauche ich was spezielles?Ich kann nämlich nicht einmal in die zweite zeile gelangen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.11.2016, 12:08     Titel:
  Antworten mit Zitat      
Hallo Homer10,

Zitat:
ich wollte den Code von Tom seinen esten Beitrag in Matlab eingeben.

Du kannst den Code in editor in eine Funktion oder in ein Script einfügen. Beides wird als M-File gespeichert, ersteres beginnt mit "function" und Du findest in der Dokumentation mehr dazu:
Code:

Zudem kann man Code auch im CommandWindow z.B. per Copy&Paste eingeben.

Zitat:
Ich kann nämlich nicht einmal in die zweite zeile gelangen.

Dann poste bitte, was Du genau getan hast und was "kann nicht" bedeutet: Bekommst Du eine Fehlermeldung?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2016, 12:18     Titel:
  Antworten mit Zitat      
Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.