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

Keine Übergabe von Variablen aus Schleifen?

 

HeinzG6
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 12:05     Titel: Keine Übergabe von Variablen aus Schleifen?
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:

Ich möchte gerne aus mehreren Edit Boxen eines GUI Zahlenwerte einlesen und diese mit jedem Wert einer Matrix vergleichen. Befindet sich dieser Wert innerhalb der Grenzen, soll er in eine neue Matrix übernommen werden.

Nun gibts aber bei der Ausführung stets folgende Beschwerde:
??? Undefined function or variable "auswx".

Und in der Folge einige Error-Meldungen. Ich vermute ja mal, dass die Variable nicht bekannt ist, kann mir aber nicht erklären wo das Problem liegt.

Hier mal mein geistiges "Werk"
Code:
Stationen=xlsread('Alle_DE-Nullung','MATLAB');
x=Stationen(:,1);
y=Stationen(:,2);
hold on
voronoi(x,y)

xKmin=get(handles.xKmin, 'String');
xKmax=get(handles.xKmax, 'String');
yKmax=get(handles.yKmax, 'String');
yKmin=get(handles.yKmin, 'String');


for i=1:length(Stationen)
     for z1=1:1:length(Stationen)
    if Stationen(i,1)<=xKmax %Wenn iter Wert der ersten Spalte kleiner Grenze
        if Stationen(i,1)>=xKmin %Wenn iter Wert der ersten Spalte größer Grenze
         
            auswx(z1,:)=Stationen(i,:)  %setze Variable = Wert der zeile
            a=1;
           
         end    
    end
     end
end


for i=1:length(auswx)
    for z2=1:1:length(auswx)
   if auswx(i,2)<=yKmax
       if auswx(i,2)>=yKmin
         ausw(z2,:)=auswx(i,:)
        end
    end
    end
end


Ich wäre hoch erfreut wenn Ihr mir helfen könntet.
Sollte irgendwas unklar sein tuts mir Leid und ich werde mich bemühen es zu beheben.
Private Nachricht senden Benutzer-Profile anzeigen


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 12:27     Titel:
  Antworten mit Zitat      
Hallo,


Code:

xKmin=get(handles.xKmin, 'String');
xKmax=get(handles.xKmax, 'String');
yKmax=get(handles.yKmax, 'String');
yKmin=get(handles.yKmin, 'String');
 


Versuch mal die noch mit num2str in Zahlen umzuwandeln.
 
HeinzG6
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 12:39     Titel:
  Antworten mit Zitat      
Leider hat der Vorschlag keinen Effekt gehabt.
Trotzdem Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.04.2011, 13:00     Titel:
  Antworten mit Zitat      
Hallo HeinzG6,
da die Variable auswx unbekannt zu sein scheint. gehe ich einfach mal davon aus, dass die Bedingungen in der ersten Schleife nicht greifen und die Variable nicht angelegt wird und er somit in der zweiten Schleife auf eine unbekannte zugreifen soll.

Setz mal den Debugger an und schau was in der Variable auswx drin steht wenn der Fehler erscheint.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HeinzG6
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 13:56     Titel:
  Antworten mit Zitat      
Vielleicht sollte ich ergänzen, dass das Skript tut was es soll, wenn es Zeile für Zeile in den Workspace gegeben wird. Soll es als M-File bzw. über das GUI ausgeführt werden entsteht beschriebenes Problem.

Hab den Debugger mal angesetzt und natürlich festgestellt, dass die Variable 'auswx' nicht im Speicher auftaucht.

Die beiden if-Schleifen sind in den letzten Versuchen garantiert erfüllt gewesen, da als Grenzen jeweils der Definitionsbereich angesetzt wurde.
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter Quint
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 18.04.2011, 14:42     Titel:
  Antworten mit Zitat      
Ich würde dennoch einen Breakpoint vor die erste Schleife setzten. Ich glaube nicht, dass Matlab die Matrix auswx nach der Schleife löscht.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.04.2011, 14:45     Titel:
  Antworten mit Zitat      
Wie sieht den dein Verusch mit der GUI bzw. m-File aus? Vielleicht liegt der Fehler beim Einbinden?
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HeinzG6
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 19:57     Titel:
  Antworten mit Zitat      
Zitat:
Ich würde dennoch einen Breakpoint vor die erste Schleife setzten.


Sorry, wenn ich doofe Fragen stell. Hab nicht die ultimative Ahnung von Matlab. Was wäre denn dabei zu erwarten?


Zitat:
Wie sieht den dein Verusch mit der GUI bzw. m-File aus?


Im GUI ist ein PushButton. Im m-File ist es so hinterlegt, dass im Prinzip der gesamte Code ausgeführt wird wenn der PushButton betätigt wird.
Brauchst du noch mehr an Infos?

Danke für eure Mühe.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 19.04.2011, 10:16     Titel:
  Antworten mit Zitat      
Kannst du den code posten wie du das aufrufst und wie dein Code mit der GUI einbindung aussieht? Ich glaube es könnte sein, dass er da mit den Workspaces durcheinander kommt.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HeinzG6
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2011, 11:28     Titel:
  Antworten mit Zitat      
Ich hab mal das komplette m-File angehängt.

Hoffe das hilft.
Verwirrung mit dem Workspace hatte ich auch schon nach einigem googeln im Verdacht, jedoch keinen Angriffspunkt gefunden.

GUI.m
 Beschreibung:
M-File zum Programm

Download
 Dateiname:  GUI.m
 Dateigröße:  7.67 KB
 Heruntergeladen:  286 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 19.04.2011, 15:29     Titel:
  Antworten mit Zitat      
da ich das leider nicht selbst testen kann, versuch mal folgendes:

Code:

Stationen=xlsread('Alle_DE-Nullung','MATLAB');
x=Stationen(:,1);
y=Stationen(:,2);
hold on
voronoi(x,y)

xKmin=get(handles.xKmin, 'String');
xKmax=get(handles.xKmax, 'String');
yKmax=get(handles.yKmax, 'String');
yKmin=get(handles.yKmin, 'String');

auswx = Stationen(Stationen(:,1)<=xKmax & Stationen(:,1)>=xKmin,:); % entspricht deiner ersten Schleife

% ausw = auswx(auswx(:,2)<=yKmax & auswx(:,2)>=yKmin,Smile; % Müsste die zweite Schleife ersetzen, aber das prüfe vorher mal bitte.

for i=1:length(auswx)
 for z2=1:1:length(auswx)
  if auswx(i,2)<=yKmax
   if auswx(i,2)>=yKmin
    ausw(z2,:)=auswx(i,:)
   end
  end
 end
end
 


Ansonsten seh ich da im Moment nichts, was mich direkt anspringt...
Sonst müsstest du mal ein lauffähiges Beispiel posten.
Oder jemand anders sieht da noch was.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?

Zuletzt bearbeitet von _Peter_ am 20.04.2011, 10:52, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
HeinzG6
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2011, 10:43     Titel:
  Antworten mit Zitat      
Besten Dank. Die umgeschriebenen Schleifen haben mich gerettet, endlich tut das Programm was es soll.
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.