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

double2int

 

bzbe
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 22.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 18:00     Titel: double2int
  Antworten mit Zitat      
Ich entschuldige mich schon vorher für die dumme Frage, weil sonst garantiert jemand kommt und sich beschwert ich soll die Suchfunktion nutzen und googlen. Hätte das zu einer Lösung verholfen wäre ich nicht hier.

Ich will eine Variable die über eine GUI eingegeben wird (sie kommt aus einem edit Feld) für eine for Schleife als Schrittweite nutzen.

Die Variable ist im Format double. Und ich bekomme die Variable nicht auf den Integer Dateitypen.

round() liefert nur wieder eine Variable vom Typ double
uint() und int() erzeugen mir eine struct. In der struct steht dann das meine Variable von der Klasse INT ist, signed oder unsigned und eben der Wert. Aber auch als Datentyp double.

Wie bekomme ich denn aus meiner double Variable eine Integer Variable.
Oder noch besser: Kann ich aus meinem edit Feld meiner GUI direkt eine int auslesen.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

wenn du in der GUI etwas eingibst, ist das ja zunächst ein String. Dann ist eine direkte Umwandlung möglich mit etwas der Form:

Code:
A = str2num('uint16(500)')


Alternativ über str2double und dann z.B. int8.

Aber mal eine ganz andere Frage: warum willst du unbedingt einen Integerdatentyp haben? In MATLAB ist es generell üblich, auch ganzzahlige Werte als Doubles abzuspeichern.

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 22.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 18:55     Titel:
  Antworten mit Zitat      
Der Befehl

Code:
startwert = str2num(get(handles.edit1,'String'))


liefert mir für startwert eine double variable.

--

Code:
startwert = str2num('uint16(get(handles.edit1,'String'))')


ist ungültige matlab syntax

--

Der Umweg über

Code:
sw = get(handles.edit1,'String')
startwert = str2num('uint16(sw)')


liefert mir für sw ein char, für startwert eine leer double Variable

--

Integer will ich deshalb haben, weil ich von einem array ab einem gewissen wert jeden xten wert bis zu einem gewissen wert haben will. Also:

Code:
for idx=start:step:ende
   
    smallarray2(id2,1) = s(idx);
    id2 = id2+1;
   
end  


wobei s ein bestehendes array ist. Und ich will eben das über step z.B. jeder 10 Wert genommen wird. Und das eben ab einem Startpunkt bis zu einem Endpunkt.
Matlab akzeptiert dann für die 3 Variablen start, step und ende nur integer.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

mal am Ende anfangen:
Zitat:
Matlab akzeptiert dann für die 3 Variablen start, step und ende nur integer.

Das wäre mir aber ganz neu. In dem Fall sollten die Variablen ganzzahlig sein - das heißt aber nicht, dass sie einen Integer-Datentyp haben müssen.

Wenn du das aber so möchtest / brauchst, versuche z.B. mal

Code:
startwert = str2num(['uint16(' get(handles.edit1,'String') ')'])

Du musst ja verhindern, dass der get-Befehl als Teil des Strings verstanden wird.

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 22.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 21:18     Titel:
  Antworten mit Zitat      
Vielen Dank für deine schnelle und gute Hilfe.


War aber total dämlich. Ich hatte immer die Fehlermeldung bekommen:

Code:
Undefined function 'stepfunction' for input arguments of type 'uint16'.


bzw anstatt uint16 stand da eben immer double oder was anderes. Das Problem war aber (und das tut mir Leid, dass ich dafür Zeit von dir in Anspruch genommen habe), dass ich den Pfad an dem die andere Funktion lag nicht zum Path hinzugefügt habe -.-

Da finde ich aber auch die Fehlermeldung irgendwie irreführend.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2014, 21:47     Titel:
  Antworten mit Zitat      
Hallo,

was ist denn an der Meldung irreführend?
Man kann ja nicht erwarten, dass MATLAB auch die Verzeichnisse durchsucht, die nicht auf dem Pfad sind...

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 22.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 21:50     Titel:
  Antworten mit Zitat      
Das ist klar. War mir auch bekannt das man das beachten muss und ich hab den Fehler eigentlich schon tausend mal gemacht und sollte daraus gelernt haben. Hab aber irgendwie da vorher absolut nicht dran gedacht.


Wenn ich die Meldung lese denke ich im Ersten Moment, dass die Funktion einen bestimmten Datentypen nicht verarbeiten kann. Es könnte ja auch einfach heißen:

Code:
Undefined function 'stepfunction'.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2014, 22:02     Titel:
  Antworten mit Zitat      
Hallo,

an sich ja. Es kann aber ja auch sein, dass es eine Funktion gibt, sie aber nur nicht für den Datentyp geeignet ist, z.B.
Code:


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.