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

Stings in Simulink vergleichen

 

testuser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 17:41     Titel: Stings in Simulink vergleichen
  Antworten mit Zitat      
Hallo,

das Thema ist wohl nicht ganz neu aber ich finde keine zufriedenstellende Lösung.

Ich möchte einfach 2 strings in Simulink vergleichen. Im Idealfall mit 2 constant Blöcken und einem relational Operator.

Für Tips bin ich wie immer dankbar.

Grüße


knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 07:34     Titel:
  Antworten mit Zitat      
Also der (standard) Ausgangsdatentyp ist in Simulink immer eine Zahl (double, int , uint usw.). Weiß nicht ob man selbst einen definieren kann, ist aber bestimmt den Aufwand nicht Wert.

Als alternative könntest du ein Array mit Zahlen nehmen, wo die Zahlenkombination der Dezimalzahl eines ASCII Zeichens entspricht.

Code:

str = [110 141 154 154 157]
 

str würde dann für "Hallo" stehen.

Nebenbei, bei welcher Aufgabe in SIMULINK müsste man Strings vergleichen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 09.01.2013, 09:59     Titel:
  Antworten mit Zitat      
Ja, die Aufgabe dazu interessiert mich auch. Nicht nur aus Neugierde, sondern auch für die Hilfestellung bei der Umsetzung. Im Prinzip sehe ich drei Optionen:

1. Vergleich für jedes Zeichen einer Gesamtnachricht - ein Zeichen per Zeitschritt in *einem* Signal
2. Paralleler Vergleich für jedes Zeichen einer Nachricht in einem oder mehreren Zeitschritten in *mehreren* Signalen oder einem Frame.
3. Vergleich ganzer Wörter und Nachrichriten in einem Zeitschritt

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
testuser

Gast


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

es geht darum einen Schalter zu schalten.
Der Schalter soll über eine Variable geschaltet werden. Diese Variable nimmt aber nicht die Größen 0 1 und 2 an sondern 'nein' 'test1' und 'test2' (Bsp.). Es gibt natürlich die Möglichkeit die Variable vorher zu übersetzen, der Aufwand dafür steht aber in keinem Verhältnis.

Grüße
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 09.01.2013, 16:31     Titel:
  Antworten mit Zitat      
Und diese "Variable" ist ein Eingangsignal? Liegt also in MATLAB für jeden Zeitschrittvor?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
testuser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 18:14     Titel:
  Antworten mit Zitat      
Ja, die liegt ganz normal om Workspace . . . ich hab schon ein bisschen versucht den string mit uint8('string') umzuwandeln. Das klappt auch, allerdings ist es halt ein array oder vector und da scheint der relational operator nur auf die erste Stelle zu schauen . . .
d.h. test1 und test2 werden als identisch geprüft
 
testuser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 19:33     Titel:
  Antworten mit Zitat      
ich hab's jetzt so gelöst . . . ist nicht schön, funktioniert aber . . .

Grüße

Falls doch noch jemand ne bessere Idee hat kann er die gern noch posten.

exmp.jpg
 Beschreibung:

Download
 Dateiname:  exmp.jpg
 Dateigröße:  9.75 KB
 Heruntergeladen:  651 mal
 
SimRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 07.01.10
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 10.01.2013, 09:16     Titel:
  Antworten mit Zitat      
Hallo Testuser,

also, nach der Umwandlung hast du ein Array (oder Vector), dann vergleiche diese nicht mit einander, sondern subtrahiere einen von dem anderen. Wenn das Ergebnis 0 ist, dann sind die beiden gleich ansonsten nicht.

Würde ich so machen.

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: 10.01.2013, 11:31     Titel:
  Antworten mit Zitat      
Hallo Testuser,

natürlich vorher auf die gleiche Länge prüfen. Mit Funktionsblock und mit "sizeof" Befehl. Sind die beiden Arrays unterschiedlich lang dann ist ja alles klar. Wenn beide gleich lang sind, dann subtrahieren um fest zu stellen ob die beiden identisch sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Raketenmaid
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 28.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 13:46     Titel:
  Antworten mit Zitat      
Ich würde an Deiner Stelle einen Funktionsplot nehmen und dann mittels Befehl strcmp jeweils zwei strings vergleichen und dann eine check-Variable entsprechend mit einem Wert belegen, je nach dem, welche der verglichenen strings übereinstimmen. Diesen Wert kannst Du dann für Deinen Schalter nutzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Raketenmaid
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 28.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 15:48     Titel:
  Antworten mit Zitat      
ich meinte natürlich einen Funktionsblock und nicht einen Funktionsplot ...
Private Nachricht senden Benutzer-Profile anzeigen
 
testuser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2013, 10:35     Titel:
  Antworten mit Zitat      
Danke für die Tips . . . das subtrahien ist natürlich die beste Variante . . .
 
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.