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

Edit Felder verursachen ein dimensions problem?!

 

Thanatos
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 15.04.2009, 15:32     Titel: Edit Felder verursachen ein dimensions problem?!
  Antworten mit Zitat      
Hallo zusammen,

habe folgendes Problem:

Über 3 Edit-Felder kann ich 3 zahlen einlesen. es ist so programmiert, dass nicht alle 3 Felder ausgefüllt sein müssen um eine berechnung zu starten. allerdings liegt hier auch schon das problem. Gebe ich im ersten Feld z.b. 10 ein und fülle die anderen felder incht aus (programm überigbt leere felder als = 0 ) dann führt das im nachfolgenden zu einer fehlermeldung "matrix dimensions must agree" . Anbei mal der auszug aus meinem Programm:

Code:

GesG=A+B+C;

set (handles.GLg,'String',GesG);

proG=(GesG/maxG)*100;

set (handles.GAPro,'String',proG);

GV=VL1+VL2+VL3;
proV=(GV/V)*100;


set (handles.VAPro,'String',proV);
 


A, B und C sind die übergebenen Werte der Edit-Felder. maxG,VL1-3 und V sind auch vorgegebene Zahlen.
Sobald ich versuche das ausführen zu lassen kommt die Fehlermeldung ander stelle wo ich proG berechnen will. Ich steig nur nicht hinter warum.
Wenn A=10 B=0 und C=0 und maxG=12000 (als Beispiel) habe ich doch vernünftige Zahlen?!

die Werte der edit-Felder werden so ausgelesen:
Code:

Gewicht1 = get (handles.edit1,'String');
Gewicht1 = regexprep(Gewicht1,'[A-ZÜÖÄ\s]','','ignorecase');
Gewicht1 = strrep(Gewicht1,',','.');
A=str2num(Gewicht1);
 

if isempty(A)
    A=0;
    VL1=0;
end;
 


wie gesagt, ich komme nicht weiter. Denn das eigenartige ist, sobald ich einmal alle Felder mit Zahlen belegt hatte, funktioniert es ohne Fehlermeldung. Confused

Ich hoffe wie immer auf eure findige Hilfe! Smile
_________________

LG

Thanatos
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 15.04.2009, 17:23     Titel:
  Antworten mit Zitat      
Hallo Thanatos,

die Fehlermeldung 'matrix dimensions must agree' für die Zeile

Code:
proG=(GesG/maxG)*100;


lässt vermuten, dass maxG oder GesG keine Zahl, sondern Vektor oder Matrix sind. Dann bedeutet '/' nämlich eine Vektoroperation. Verfolge mal die beiden Variablen zurück zu ihrer Entstehung.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Thanatos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 15.04.2009, 21:40     Titel:
  Antworten mit Zitat      
hmm..so ganz versteh ich nicht was du meinst, aber ich kann dir folgendes sagen:

GesG ist ja, wie man oben sieht ne Summe der 3 eingelesenen Zahlen.

und maxG ist eine (so habe ich das zumindest gewollt) aus einer datei eingelesene Zahl. das ist eine *.dat datei in der eigentlich nur 2 Zahlen nebeneinander stehen. Sieht matlab das vielleicht als eine Vektorzahl an und meckert deswegen? Wenn ja, was kann ich dagegen machen?
_________________

LG

Thanatos
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 15.04.2009, 22:56     Titel:
  Antworten mit Zitat      
Lass dir doch mal die Sachen ausgeben bzw. debugg den code mal, dann siehst du ja die Belegung der Variablen. Wenns ein Vektor mit 2 Elementen ist, sollte maxG(1) abhilfe schaffen.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Thanatos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 16.04.2009, 09:38     Titel:
  Antworten mit Zitat      
guten Morgen,

also ich hab das grade mal debugged und er spuckt tatsächlich nur eine Zahl aus.

das eigenartige an der sache ist ja, dass es nur am anfang nicht funktioniert. sobald ich einmal ne große zahl zur berechnung eingegeben habe, so dass ein anderes unterprogramm mit der großen zahl hantieren muss, funktioniert es danach auch mit der kleinen zahl.

zum besseren verständnis:
- es ist ein programm, dass schiffe belädt, wobei die ladung mit unterschiedlichen koeffizienten eingeht

- ab einer bestimmten menge (wenn ins größte schiff nix mehr reingeht) nimmt das prog ein 2. schiff dazu um die ladung einladen zu können

- sobald einmal 2 schiffe benutzt wurden und man versucht im anschluss wieder mit ner kleinen zahl nur ein schiff zu beladen, funktioniert dies ohne die fehlermeldung.

- selbst wenn ich das prog beende und neustarte funktioniert es noch


bin ziemlich verzweifelt grad Confused
_________________

LG

Thanatos
Private Nachricht senden Benutzer-Profile anzeigen
 
Trimax
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 54
Anmeldedatum: 09.04.09
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.04.2009, 11:14     Titel:
  Antworten mit Zitat      
Am besten, Du hälst den Code kurz vor der Berechnung von GesG an und postest den Inhalt vom function space Smile

VG
Trimax

Zuletzt bearbeitet von Trimax am 16.04.2009, 11:59, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Thanatos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 16.04.2009, 11:42     Titel:
  Antworten mit Zitat      
wie meinst du das? debug bis GesG=A+B+C ? und dann? sry steh grad aufm schlauch Embarassed
_________________

LG

Thanatos
Private Nachricht senden Benutzer-Profile anzeigen
 
Trimax
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 54
Anmeldedatum: 09.04.09
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.04.2009, 11:47     Titel:
  Antworten mit Zitat      
Du gehst in die o.g. Zeile, drückst F12 (Breakpoint wird gesetzt). Dann gehst Du ins command window und gibst "whos" ein und postest hier den Auszug.
Private Nachricht senden Benutzer-Profile anzeigen
 
Thanatos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 16.04.2009, 11:50     Titel:
  Antworten mit Zitat      
ahh..sry für meine unwissenheit! Embarassed

hier der auszug:

Code:

 Name           Size            Bytes  Class     Attributes

  A              1x1                 8  double    global    
  B              1x1                 8  double    global    
  C              1x1                 8  double    global    
  GesG           0x0                 0  double    global    
  Schiff         0x0                 0  double    global    
  V              0x0                 0  double    global    
  VL1            1x1                 8  double    global    
  VL2            1x1                 8  double    global    
  VL3            1x1                 8  double    global    
  eventdata      0x0                 0  double              
  hObject        1x1                 8  double              
  handles        1x1              4488  struct              
  maxG           0x0                 0  double    global    
  name           0x0                 0  double    global    
  s              1x1                 8  double    global    
  sname          1x8                16  char      global    
  varargout      1x1                68  cell                
  x              1x1                 8  double    global    
  y              1x1                 8  double    global    
  zname          1x9                18  char      global    


also ich versteh das so, dass maxG durch 0x0 gar nicht belegt ist?! Confused aber wieso das denn nicht... habs im hauptprogramm aus ner datei geladen und über global verfügbar gemacht Question
_________________

LG

Thanatos

Zuletzt bearbeitet von Thanatos am 16.04.2009, 11:53, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Trimax
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 54
Anmeldedatum: 09.04.09
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.04.2009, 11:53     Titel:
  Antworten mit Zitat      
Und da ist auch das Problem:

Code:
proG=(GesG/maxG)*100;

Führt zu "Matrix dimensions must agree.", da maxG zwar definiert aber nicht initialisiert ist bzw. keinen Wert enthält (size 0x0).

Code:
maxG           0x0                 0  double    global


VG
Trimax
Private Nachricht senden Benutzer-Profile anzeigen
 
Thanatos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 16.04.2009, 11:58     Titel:
  Antworten mit Zitat      
Ah, verdammt, gut dann hab ich den Fehler gefunden.

ich habe erst die neue GUI aufgerufen und dann die Werte übergeben! Kaum geändert, schon funktioniert es!

Vielen Dank! Ich wäre da nie drauf gekommen! (so simpel und doch so verheerend Confused )
_________________

LG

Thanatos
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 - 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.