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

platzhalter in string aus binär-daten

 

dedda
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 13:51     Titel: platzhalter in string aus binär-daten
  Antworten mit Zitat      
Hallo,

ich habe aus einer Messung am CAN-Bus einen Datenstring, der beispielsweise in folgendem Format vorliegt (16 Bits):

1101 1001 1100 0000 1111 1100

Jetzt bedeuten verschiedene Konstellationen von Bits auch verschiedene Zusammenhänge. Um diese Zusammenhänge heraauszufinden, muss ich die verschiedenen Teilbits mit dem Datenstring vergleichen. Bsp:

entspricht Bit 1,2,3,5,6,7 = 110000, dann....
entspricht Bit 1,2,3,8,9,10 = 110010, dann....
entspricht Bit 1,2,3,14,15,16 = 110010, dann....

Insgesamt habe ich 15 solcher Vergleiche zu untersuchen. Momentan mache ich das ganze mit 15 switch-case-Anweisungen.

Meine Idee ist jetzt den kompletten Datenstring in einer switch Anweisung zu vergleichen. Dafür brauche ich aber einen Platzhalter in dem Datenstring (im obigen Beispiel ist es egal, ob das Bit 4 0 oder 1 ist)

Gibt es einen Befehl/Zeichen womit ich dies realisieren kann?
Komplettes Beispiel:

switch datenstring
case '110%000%%%%%%%%%%%'

case '110%010%%%%%%%%%%%'

case '110%010%%%%%%%%%010'

end

wobei das %-Zeichen für die Bits steht, welche mich nicht interessieren. Sonst müsste ich sämtliche Konstellationen mit den erwähnten 15 switch-case-Anweisungen durchgehen.

Ich bin dankbar für Vorschläge

Grüße dedda
Private Nachricht senden Benutzer-Profile anzeigen


Sigggi
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 27.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 14:24     Titel:
  Antworten mit Zitat      
Hallo dedda,

Du könntest Dir eine Cellvariable mit den Mustern erstellen:

Code:

pattern{1}=['1';'2';'3';'5'];
pattern(2)=['1';'3';'6'];
...
 


Dann Deinen Datenvektor auf jedes Muster untersuchen

Code:

% loop über alle definierten Muster
for k=1:length(pattern)
  % das jeweilige Muster an den String tmp übergeben
  tmp=pattern{1};
  % loop über die einzelnen Bitpositionen
  for l=1:length(tmp)
    % den String der Musterposition zum Indizieren nutzen
    x(l) = bindata(num2str(tmp(l)));
  end
  % überprüfen, ob jeweils nur Einsen dabei sind
  match(k) = (min(x) == 1);
  clear x
end
 


Im Vektor match sollte nachher das Auftreten der in Pattern definierten Muster mit 1 gekennzeichnet sein. Das Beispiel hat einige Schleifen; es gibt bestimmt noch elegantere Methoden ...

Gruß, Sigggi.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
dedda
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 17:25     Titel:
  Antworten mit Zitat      
Die Idee ist sehr gut,wer das gleich mal umsetzen.

Mein Problem ist noch, dass ich etwa 60000 solcher Datenstrings bereits in einer for-Schleife untersuche und das ganze eh schon langsam ist.

Werd mal mit tic toc die Zeit messen.

Falls es noch ne effektivere Methode gibt, bin ich natürlich auch nicht abgeneigt.

Grüße, dedda
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.