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

Code über Funktionen übersichtlicher machen

 

J_ens

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2012, 11:31     Titel: Code über Funktionen übersichtlicher machen
  Antworten mit Zitat      
Hallo,

ich habe einen ziemlich langen code und möchte diesen etwas übersichtlicher Gestalten. Deshalb hab ich ihn jetzt in mehrere m-files (jeder "Schritt" in eine file) aufgeteilt und will über eine Hauptfile auf die nötigen Variablen aus den anderen files zugreifen. Die einzelnen files greifen untereinander teilweise auch auf Variablen der anderen zu. Ich habe aus jeder file einfach eine Funktion gemacht und die außerhalb benötigten Variablen in den eckigen Klammern übertragen function
Code:
[Var1] = Messdaten()
bzw. diesen Funktionsnamen in einer anderen file wieder aufgerufen
Code:
[Var1] = Messdaten();
. Einige öfter benutzte Variablen habe ich global gesetzt. Meine Fragen:

1. Ist das so die einfachste/übersichtlichste Art oder gibt es in meinem Fall bessere Möglichkeiten?

2. Ohne die Funktionen Funktioniert alles wunderbar. Aber sobald ich eine Funktion daraus mache:

Code:
function [Var1] = Messdaten()

for i = 1:10  
   
if ~exist(['C:\Users\.....' num2str(i*2-1) '0.001'])
continue;
end    

importfile(['C:\Users\.....' num2str(i*2-1) '0.001'])
Data{i} = data;

v{i} = Data{i}(1,6);      
.....

und von einer anderen m-file wie oben beschrieben darauf zugreife, kommt als Fehlermeldung: Undefined function or variable 'data'. Wenn ich data dann global setze kommt als nächste Meldung: Index exceeds matrix dimensions. Irgendwie bin ich da noch nicht ganz durchgestiegen und wäre über Hilfe echt dankbar!

Grüße Jens


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.05.2012, 17:25     Titel:
  Antworten mit Zitat      
Hallo,

Funktionen haben, um alles übersichtlich zu gestalten, getrennte Workspaces (Arbeitsbereiche). Alles, was in einer Funktion definiert wird und in einer anderen bekannt sein soll, muss explizit übergeben werden.

Das "index exceeds matrix dimensions" bedeutet, dass du auf ein Element zugreifen wolltest, das es nicht gibt. Beispiel:
Code:
A = [1 2];
A(3)


Woran das bei dir genau liegt, kannst du am einfachsten herausfinden, wenn du den Debugger verwendest.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2012, 17:50     Titel:
  Antworten mit Zitat      
Genau das verstehe ich nicht. Sobald data bekannt ist kann ich doch
Code:
Data{i} = data;
definieren und über
Code:
v{i} = Data{i}(1,6);
darauf zugreifen. Das ist doch dann alles im gleichen Workspace dieser m-file!??
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.05.2012, 20:30     Titel:
  Antworten mit Zitat      
Hallo,

wie dir die Fehlermeldung sagt, ist data (mit kleinem d) aber nicht bekannt.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2012, 19:52     Titel:
  Antworten mit Zitat      
Zitat:
Wenn ich data dann global setze kommt als nächste Meldung: Index exceeds matrix dimensions.


Das düfte dann doch nicht sein!?!
 
J_ens

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2012, 19:56     Titel:
  Antworten mit Zitat      
Dann ist 'data' bekannt und die Fehlermeldung: index exceeds matrix dimensions erscheint für die variable 'v'. Das verstehe ich dann nicht
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.05.2012, 20:07     Titel:
  Antworten mit Zitat      
Hallo,

ohne die Daten zu haben, kann ich dir das auch nicht erklären.

Alles, was ich ohne die Daten dazu sagen kann, habe ich in meinem Beitrag von gestern, 18:25 geschrieben.

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.