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
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2016, 14:26     Titel:
  Antworten mit Zitat      
Hallo,

ich will noch eine weitere ähnliche Funktion schreiben.

Beispiel:

sollwert= [10 20];
istwert = [12 23];
neuerWert= [9 8]; %Mein Wert, der korrigiert werden soll

Code:
function istwert_korrigiert = Fehlerkorrektur(neuerWert)
    fehler = (sollwert-istwert)*(100/istwert);   %Fehler in %
    istwert_korrigiert = neuerWert*(1+fehler/100);
end



Mit fehler habe ich den Fehler in % ausgerechnet. Diesen Fehler möchte ich auf den neuerWert draufrechnen und ausgeben
Der Code stimmt so nicht. Vllt kann mir jemand helfen, das klappt nicht so ganz
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: 20.12.2016, 16:49     Titel:
  Antworten mit Zitat      
Hallo Homer10,

Bitte lasse uns nicht raten: Was ist denn an Deiner Berechnung falsch? Dir ist das wahrscheinlich sonnenklar, aber die Leser im Forum, die keine Kristall-Kugel verwenden, können nicht wissen, was Du eigentlich erhalten möchtest.

Lasse die *100 und /100 weg, denn es bringt keinen Vorteil mit Prozenten zu rechnen, oder? 0.1 oder 10% ist ja das gleiche.

Die Variable istwert ist innerhalb der Funktion nicht definiert. Du brauchst sie also auch als Input.

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: 20.12.2016, 22:09     Titel:
  Antworten mit Zitat      
Meine erste Frage ist die Folgende


Wie kann man in matlab folgende Rechnung implementieren?

-Ich will den Wert von - istwert_korrigiert -
-Der Wert berechnet sich durch

istwert_korrigiert = istwert + istwert*(fehler/100);

So funktioniert es nicht

istwert und fehler sind vektoren
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: 21.12.2016, 00:11     Titel:
  Antworten mit Zitat      
Hallo Homer10,

Zitat:
Code:
istwert_korrigiert =  istwert + istwert*(fehler/100);

So funktioniert es nicht

Dann erkläre noch, was daran nicht funktioniert. Bekommst Du eine Fehlermeldung? Dann poste eine vollständige Kopie davon. Oder weicht das Ergebnis von Deinen Erwartungen ab? Dann beschreibe beide.
Es ist viel einfacher Probleme zu lösen als sie zu erraten.

Zitat:
istwert und fehler sind vektoren

Bedeutet das, dass Du bei der Multiplikation eine Fehlermeldung bekommst? Und Du möchtest eine wlement-weise Multiplikation? Dann nimm .* statt *

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: 21.12.2016, 09:02     Titel:
  Antworten mit Zitat      
Ohne klammer hat es doch funktioniert. Ich habe es seperat im Command Fenster getestet. Wie sieht es aus, wenn ich es als Funktion haben will. Ich verstehe das mit den Funktionen nicht. Nehmen wir mal an(der Inhalt ist egal)

Code:
function istwert_korrigiert = Fehlerkorrektur(neuerWert)
    fehler = (sollwert-istwert)*(100/istwert);              %Fehler in %
    istwert_korrigiert = neuerWert*(1+fehler/100);
end


sollwert, istwert und neuerWert habe ich Werte zugewiesen. Jetzt will ich das mir istwert_korrigiert ausgegeben wird. Es geht wie gesagt nicht um den Inhalt, sondern grundsätzlich wie man mit Funktionen arbeitet. Wahrscheinlich habe ich wieder vergessen irgendwas zu erwähnen
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: 21.12.2016, 11:33     Titel:
  Antworten mit Zitat      
Hallo Homer10,

Die Dokumentation erklärt Funktionen eigentlich erschöpfend. Hast Du dort schon mal nachgelesen? Es wäre nicht effizient, wenn ich das nacherzähle.

Im Code-Beispiel, dass Du gepostet hast, wird istwert_korrigiert bereits als Output zurückgegeben. Insofern ist die Frage eigentlich schon beantwortet.
Die Definitions-Zeile der Funktion legt fest, welche Variablen als Input hinein kommen und als Output wieder heraus:
Code:
function [Out1, Out2, ...] = FuncName(In1, In2, ...)

Hilft das bereits?

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: 21.12.2016, 12:32     Titel:
  Antworten mit Zitat      
Wenn ich eingebe

Code:
function istwert_korrigiert = Fehlerkorrektur(sollwert, istwert, neuerWert)
    fehler = (sollwert-istwert)*(100/istwert);              %line 7
    istwert_korrigiert = neuerWert*(1+fehler/100);
end


und auf run gehen,
kommt die Meldung:

Error using Fehlerkorrektur (line 7)
Not enough input arguments.

Ich habe doch mein Input mit sollwert, istwert, neuerWert vollständig.
Alle habe ich im Command Werte zugewiesen.
Habe es genauso(angepasst) gemacht wie im ersten Beitrag von Tom_Gast
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: 21.12.2016, 13:56     Titel:
  Antworten mit Zitat      
Hallo,

und wie rufst du die Funktion auf?
Die Fehlermeldung lautet ja "nicht genug Eingabeargumente". Stellst du denn beim Aufruf überhaupt Eingabeargumente zur Verfügung, oder drückst du stattdessen vielleicht auf den Run-Button (und rufst die Funktion somit ohne Eingabeargumente auf)?

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: 21.12.2016, 14:31     Titel:
  Antworten mit Zitat      
Ich rufe es mit

istwert_korrigiert = Fehlerkorrektur(sollwert, istwert, neuerWert);
auf

Ist das richtig?


Alle meine Inputs sind im Workspace als Vektoren schon drinne.
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: 21.12.2016, 14:38     Titel:
  Antworten mit Zitat      
Hallo,

bei diesem Aufruf dieser Funktion sollte die Fehlermeldung nicht auftreten.

Wird bei
Code:
which Fehlerkorrektur
das richtige Verzeichnis angezeigt?

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: 21.12.2016, 15:02     Titel:
  Antworten mit Zitat      
Auf dem Desktop habe ich einen Ordner, wo es reingespeichert wird.
Selbe Verzeichnis wie in der Leiste im Programm

Muss es irgendwo anders rein?
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: 21.12.2016, 16:17     Titel:
  Antworten mit Zitat      
Hallo,

1. bekommst du immer noch die Fehlermeldung?
2. Falls ja, führe bitte den Befehl aus.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.