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

Undefined function or method

 

Pendler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2013, 18:41     Titel: Undefined function or method
  Antworten mit Zitat      
Hallo alle zusammen,

ich bin eher ein Matlab Neuling und habe gerade etwas rumprobiert mit einigen Dingen. Nun stehe ich vor einem Problem, bei welchem mir noch keine Lösung einfällt. Nach einigem probieren, wollte ich nun doch lieber mal nachfragen, was ich zur Funktionsfähigkeit verändern müsste.

Code:

clear all
clc

i=0;
Differenz=[2 3 -5 3];

for i=1:length(Differenz);
    if i==1 && Differenz(i) >=0;
        Differenz_positiv(i)= Differenz(i);
    elseif i==1 && Differenz(i) <0;
        Differenz_negativ(i)=Differenz(i);    
    elseif i> 1 && Differenz(i) >=0;
        Differenz_positiv(i)= Differenz(i) + Differenz_positiv(i-1);
    elseif i> 1 && Differenz(i) <0;
        Differenz_negativ(i)= Differenz(i) + Differenz_negativ(i-1);
    end
end;
 


gibt mir:

??? Undefined function or method 'Differenz_negativ' for input arguments of type 'double'.

Error in ==> Test at 15
Differenz_negativ(i)= Differenz(i) + Differenz_negativ(i-1)';

Welchem einfachen Fehler bin ich da aufgesessen? Ich würde mich über jede Hilfe freuen!

Viele Grüße


Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 30.10.2013, 23:06     Titel:
  Antworten mit Zitat      
Hallo Pendler,

schau mal in deinen Workspace, wenn der Fehler auftritt. Soweit ich den Code jetzt nachvollzogen habe, wird die Variable "Differenz_negativ" nie definiert, du verwendest sie aber in der Zeile in der der Fehler auftritt.

Was willst du denn eigentlich genau machen? Verstehe deine Absicht nicht so ganz Smile

Viele Grüße
Alex
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: 30.10.2013, 23:08     Titel:
  Antworten mit Zitat      
Hallo,

geh das mal mit dem Debugger durch. Du wirst sehen, dass du versuchst, die Variable (auf der rechten Seite) zu nutzen, bevor du sie (auf der linken Seite) definierst.

Ich weiß zwar nicht, was du als Ergebnis möchtest, kann mir aber vorstellen, dass es auch ohne for-Schleife geht, z.B.
Code:
Differenz_positiv = cumsum(Differenz(Differenz > 0))
Differenz_negativ = cumsum(Differenz(Differenz < 0))

oder
Code:
Differenz_positiv = cumsum(max(Differenz, 0))
Differenz_negativ = cumsum(min(Differenz, 0))


Schreib doch auch dazu, welchen Output du dir hier erwartest (und vielleicht auch für ein etwas komplexeres Beispiel, d.h. mit mehr negativen Zahlen).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Pendler01
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 16:41     Titel:
  Antworten mit Zitat      
Danke, mit

Code:

Differenz_positiv = cumsum(max(Differenz, 0))
Differenz_negativ = cumsum(min(Differenz, 0))
 


klappt das kumulieren wunderbar, aber was macht er dabei mit der (Differenz, 0)? Wozu diese Null?

Wenn ich dieses Script (nennen wir es mal Differenz.mat) jetzt durch aufrufen und in einem größerem Kontext (Script) nutzen möchte, kann ich dann einfach folgendes machen?

Code:

n=0;

Differenz;

for n=1:length (max(Differenz_positiv))
    Differenz;
    Zahl(n)=Differenz_positiv(n)+Differenz_negativ(n);
end;

 


Mir ist bewußt, dass man das auch anders lösen kann. Aber wie würde das aufrufen eines scriptes und die Nutzen der Daten aus ihm, in einem anderen Programm funktionieren? Ich habe mir schon vieles über den Befehl "function" durchgelesen, aber leider noch nicht verstanden. Wäre schön, wenn man es mir mal an diesem Beispiel erklären könnte!

Danke für eure Hilfe
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: 02.11.2013, 16:52     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber was macht er dabei mit der (Differenz, 0)? Wozu diese Null?

Ich habe das komponentenweise Maximum bzw. Minimum des Vektors mit 0 genommen, um negative bzw. positive Werte für die Bildung der kumulativen Summe zu ignorieren - siehe Doku von max oder min.

Wenn dein Programm so das macht, was du möchtest, dann kann man es so machen, ja. Ich würde aber zur besseren Strukturierung an der Stelle mit Funktionen arbeiten, siehe z.B.

http://www.mathworks.com/help/matla.....e-functions-in-files.html
http://www.mathworks.com/help/matla.....-function-workspaces.html
sowie verwandte Themen.

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



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.