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

Matrix in m-file übergeben

 

Gast123423

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2016, 19:01     Titel: Matrix in m-file übergeben
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem:
Code:

function [ z ] = test(Wert, m)

f=(Wert-(min(abs(m(:,1)-Wert))));

z=find(m==f);

end
 

Ich möchte diese Funktion aufrufen, m ist ein Array mit 1331 Einträgen, Wert ist ein scalar.
Wenn ich die gleichen Befehle im Command Window hintereinander ausführe funktioniert alles ohne Probleme, aber bei dem Funktionsaufruf kommt die Meldung:
"Index exceeds matrix dimensions"
Was ist jetzt bei dem Funktionsaufruf anders?


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.01.2016, 18:10     Titel: Re: Matrix in m-file übergeben
  Antworten mit Zitat      
Hallo Gast123423,

Bitte poste eine vollständige Kopie der Fehlermeldung und zeige, wie Du die Funktion aufrufst. Ist m die leere Matrix?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast123423

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 12:29     Titel: Re: Matrix in m-file übergeben
  Antworten mit Zitat      
Hallo Jan,

m ist ein array von (1331x1) Einträgen, alle Werte sind definiert.
Wert hat zu testzwecken auch einen Wert vorgegeben, soll später aber variable bestimmt werden.

Die angegebene Fehlermeldung ist die Vollständige, mehr zeigt mir Matlab nicht an.

Die Funktion hab ich erstmal nur im command Window aufgerufen,

test( Wert, m)

beide zu übergebenden Variablen sind wie gesagt definiert.
Wenn ich die Befehle aus der Funktion nehme und einzeln im command Window aufrufe, also

f=(Wert-(min(abs(m(:,1)-Wert))));

z=find(m==f);

funktioniert alles ohne Fehlermeldung und ich bekomme das gewollte Ergebnis.

Gruß
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.01.2016, 23:11     Titel: Re: Matrix in m-file übergeben
  Antworten mit Zitat      
Hallo Gast123423,

Zitat:
m ist ein array von (1331x1) Einträgen, alle Werte sind definiert.

Wert hat zu testzwecken auch einen Wert vorgegeben, soll später aber variable bestimmt werden.
Das verstehe ich nicht. Was bedeutet "variable bestimmt"?
Eine einfache Methode die Daten zu erklären wäre es, einen passenden Matlab-Code dafür zu posten. Die genau Größe des Arrays spielt dabei wohl keine Rolle, oder? Aber der Typ könnte von Belang sein.

Zitat:
Die angegebene Fehlermeldung ist die Vollständige, mehr zeigt mir Matlab nicht an.

Das halte ich für extrem unwahrscheinlich. Üblicherweise enthalten Fehlermeldungen noch einen Hinweis, in welcher Zeile sie auftreten. Dieses Details zu erraten ist unpraktisch.

Zitat:
beide zu übergebenden Variablen sind wie gesagt definiert.

Dann zeige doch bitte, wie Du sie definiert hast. Da gibt es doch offensichtlich irgendwo ein Problem im Code. Wenn Du möchtest, dass wir das Problem finden, sind genaue Angaben erforderlich.

Benutze mal den Debugger um heraus zu finden, ob die Funktion überhaupt aufgerufen wird. Vielleicht hast Du verschiedene Versionen der Funktion erzeugt und es läuft gar nicht die Funktion von der Du es glaubst.
Jedenfalls wird Matlab ganz sicher nicht den gleichen Code anders ausführen, wenn er in einer Funktion steht. Das Problem liegt an einer anderen Stelle.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast123423

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 08:30     Titel: Re
  Antworten mit Zitat      
Hallo Jan,

Thread kann geschlossen werden. Nachdem ich den Workspace auf die zwei benötigten Variablen verkleinert hab, liefert mir die Funktion auch das gewünschte Ergebnis.

gruß
 
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 - 2024 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.