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

Constant-Block in String umwandeln

 

Deniz
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2011, 14:21     Titel: Constant-Block in String umwandeln
  Antworten mit Zitat      
Hallo,
ich möchte einer User's defined function einen String und 2 numbers übergeben, da ich ein M-File habe, welches diese als Input benötigt.
( function Out = x(fun,In1,In2))

ist es möglich, einen Constant-Block in einen String umzuwandeln?

MfG
Deniz
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 11.04.2011, 15:28     Titel:
  Antworten mit Zitat      
Hallo Deniz,
Deniz hat Folgendes geschrieben:

einen Constant-Block in einen String umzuwandeln?

wie meinst du das? Willst du den Wert umwandeln? Dann mit:
Code:

Ansonsten verstehe ich deine Frage nicht.
_________________

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
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2011, 16:31     Titel:
  Antworten mit Zitat      
Ich habe mal ein Bild angehängt wie ich es meine.
Da meinem m-file ein String und 2 Values übergeben werden, müsste ich den einen Constant-Block ja als String an den function-Block übergeben.

Ich hoffe es ist nun deutlicher.

Gruß
Deniz

Constant.jpg
 Beschreibung:

Download
 Dateiname:  Constant.jpg
 Dateigröße:  11.2 KB
 Heruntergeladen:  499 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2011, 17:17     Titel:
  Antworten mit Zitat      
Ich habe diesen Beitrag hier gefunden:
http://www.gomatlab.de/strings-in-s.....k-verarbeiten-t15557.html

Aber ich bekomme es noch nicht so ganz hin:
Ich habe meine Constant-Block in ein Subsystem eingefügt und den Masken-Editor aufgerufen. Meinen Constant-Block habe ich mit h_pT benannt (Doppelklick auf den Block).
Im Masken-Editor bin ich dann auf Initialization und habe dort
Code:

b=char(h_pT);
h_pT=cast(b, 'uint8');
 

eingegeben. Es funktioniert aber nicht. Muss ich am Constant-Block noch etwas ändern, oder evtl in der Maske?

MfG
Deniz
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 12.04.2011, 09:53     Titel:
  Antworten mit Zitat      
Also das habe ich noch nicht gemacht, aber im verlinkten Beitrag steht:
SimRookie hat Folgendes geschrieben:

Im Masken Editor die Variable "Name" definieren.


Hast du das gemacht?
_________________

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
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 10:19     Titel:
  Antworten mit Zitat      
Habe ich definiert, ja.
Ich hab mal Bilder angehängt von meinem Beispiel-Modell und den einzelnen Registereinträgen plus dem Fehler.

Mein MUX erwartet auch einen double, deswegen meckert das System auch rum.
Aber iwie muss es ja funktionieren

Fehler.jpg
 Beschreibung:

Download
 Dateiname:  Fehler.jpg
 Dateigröße:  45.35 KB
 Heruntergeladen:  482 mal
Subsystem_Maske.jpg
 Beschreibung:

Download
 Dateiname:  Subsystem_Maske.jpg
 Dateigröße:  14.74 KB
 Heruntergeladen:  556 mal
Mask_Editor_Initialization.jpg
 Beschreibung:

Download
 Dateiname:  Mask_Editor_Initialization.jpg
 Dateigröße:  41.99 KB
 Heruntergeladen:  576 mal
Mask_Editor_Parameter.jpg
 Beschreibung:

Download
 Dateiname:  Mask_Editor_Parameter.jpg
 Dateigröße:  53.87 KB
 Heruntergeladen:  540 mal
Versuchsmodell.jpg
 Beschreibung:

Download
 Dateiname:  Versuchsmodell.jpg
 Dateigröße:  11.01 KB
 Heruntergeladen:  526 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 12.04.2011, 10:43     Titel:
  Antworten mit Zitat      
Hallo Leute,

ich habe dem Deniz zwar per PN geantwortet, hier aber noch mal für alle, die es interessiert zur Verdeutlichung:

Der Begriff "Definieren" im verlinkten Beitrag wurde von mir etwas unglücklich gewählt. Besser wäre "als Parameter" anlegen. Im Maskeditor sind vier Register, einer davon ist Parameters. Dort soll auch ein Parameter angelegt werden, der mit der Variablen aus Constat Block verknüpft wird, da sonst kein Zusammenhang zwischen dem Block und der Maske besteht und der Code im Initialization-Register keine Bedeutung hat. Der Name aus dem Parametrs-Register erscheint dann als Alias für die Variable.

Die Einschränkung dabei ist, dass die Konvertierung des Strings in ein Array nicht wärend der Simulation statt findet. War bei mir auch nicht nötig.

Ich hoffe dass es jetzt etwas verständlicher ist.

Gruß

SimRookie
Private Nachricht senden Benutzer-Profile anzeigen
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 12.04.2011, 10:55     Titel:
  Antworten mit Zitat      
Hallo Deniz,

aus Deinen Sreenshorts sehe ich dass Du alles soweit richtig gemacht hast. Jetzt zu deinem Problem, ich weis wie es ist wenn man auf einer Sache fokussiert ist, sodass man die einfachsten Dinge nicht sieht. Die Lösung: im Maskeditor konvertiere dein String nicht in ein uint_8 Array sondern in ein ... Array, genau Du hast es. Wink (Bitte nicht falsch verstehen, ich will dich nicht vera..). Ich bin sicher darauf wärst Du selber gekommen.

Gruß

SimRookie
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 11:11     Titel:
  Antworten mit Zitat      
Ok...ich nehms nich persönlich, aber trotzdem steh ich auf dem Schlauch. Nachdem ein double erwartet wird, hab ich es jetzt in ein double umgewandelt.
Jedoch kommt jetzt wieder ein Fehler, 'unknown calling Function to xy'.

Sorry, dass ich mich gerade so dumm anstelle!(Als Ausrede vllt: Ich arbeite gerade auch noch an anderen Problemen Wink )

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 12.04.2011, 11:25     Titel:
  Antworten mit Zitat      
Hallo Deniz,

also wenn Du nur, und nur uint8 in double geändert hast dann dürfte es kein Problem mit Konvertierung geben. Dann musst du den Fehler in deiener MATLAB-Fcn suchen. Besser wäre Sreenshot der Fehlermeldung.

Gruß

SimRookie
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 11:31     Titel:
  Antworten mit Zitat      
Ja, ich habe nur das bei der Initialisierung geändert.

Und als weiter Angabe noch: In der Maske des Function Blockes steht XSteam(u(1),u(2),u(3)), wo bei wie gesagt im m-File steht XSteam(fun,In1,In2).

ich übergebe dann im Moment doch gerade 3 doubles an meine Funktion, oder nicht? Erkennt mein m-file das erste double denn dann als string?

Fehler2.jpg
 Beschreibung:

Download
 Dateiname:  Fehler2.jpg
 Dateigröße:  91.79 KB
 Heruntergeladen:  473 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 12.04.2011, 12:12     Titel:
  Antworten mit Zitat      
Hallo Deniz,

insgesammt übergibst Du der Matlab-Fcn 6 double Werte, 4 aus dem String + p + T. Allerdings kann ich dir mit dem Fehler nicht weiter helfen. Viel Erfolg noch.

Ob deine Funktion die doubel Werte als Strings erkennt hängt von der Funktion ab. Zur Not kannst Du in der Funktion die ersten 4 Werte zurück konvertieren. Alles ohne Gwähr

Gruß

SimRookie
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 12:48     Titel:
  Antworten mit Zitat      
Also ich weiß was du meinst, aber ich weiß nicht, wie ich das innerhalb des m-files zurückkonvertieren sollte.

Denn mein m-file baut ja nun mal darauf auf, dass es 3 Inputs besitzt. Ich kann ihm doch keine 6 Inputs übergeben.
Und iwie kommt es mir dann so vor, als wäre die Konvertierung zuvor dann für die Katz.

Nehme ich evtl den falschen User's defined Block bzw darf ich nicht mit MUX arbeiten?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 12.04.2011, 13:51     Titel:
  Antworten mit Zitat      
Hallo Deniz,

zum Thema Funktionen und alles was dran hängt würde ich auf die Matlab-Hilfe verweisen in der alles ausführlich beschreiben ist. Aus deinen Fragen habe ich den Eindruck, dass du generell mit den Grundlagen der Programmierung Schwierigkeiten hast. Sei mir nicht böse aber das hat nichts mehr mit dem Thema dieses Threads zutun, und daher würde ich dir raten ein neuen mit der passenderen Überschrift aufmachen.

Ich wünsche Dir viel Erfolg.

Gruß SimRookie
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.