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

Struct mit CHAR feld durchsuchen

 

DrIngEnd
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 22:34     Titel: Struct mit CHAR feld durchsuchen
  Antworten mit Zitat      
Hallo zusammen, hab schon mal die verschiedenen Hinweise ausprobiert aber irgendwie komme ich nicht ans Ziel.
Ich verwende eine struct tabelle um verschieden Frequenzen auszuwählen (kommt aus der RDS-Radio Spec)

FM_Cod_Table ist ein Struct-Variable:
FM_Code_Table =

Nummer: [256x1 double]
Bin: [256x8 char]
Traegerfrequenz: {256x1 cell}

In Number stehen die Werte von [0:256]'
0
1
2
...

In Bin die zugehörigen Binärzahlen:
00000000
00000001
00000010
...
In Traegerfreuenz zugehörige Frequenzen:
'nicht verwenden'
'87,6 MHz'
'87,7 MHz'
'87,8 MHz'
...

Wenn ich nun einen RDS-Code dekodiere, bekomme ich den binärwert, z.B. 00000010,

wie kann ich nun mein Struct nach diesem Binärwert durchsuchen?
Private Nachricht senden Benutzer-Profile anzeigen


DrIngEnd
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 22:58     Titel:
  Antworten mit Zitat      
Ich Dussel,

ich kann ja die Dezimalwerte durchsuchen (siehe Forum):
Code:

function[FirstCode, SecondCode] = AF_Coding(code_in_Group_C_hex)
% Dekodierung der AF - Alternative Frequenzen
%
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load FM_Code_Table.mat
%%
BitsThirdBlock = dec2bin(hex2dec(code_in_Group_C_hex),16);
FirstByte      = BitsThirdBlock(1:8);
SecondByte     = BitsThirdBlock(9:end);

% FirstCode   = bin2dec(FirstByte);
% SecondCode  = bin2dec(SecondByte);
% Code = find(FM_Code_Table.Nummer==FirstCode);

FirstCode   = FM_Code_Table.Traegerfrequenz(find(FM_Code_Table.Nummer==bin2dec(FirstByte)));
SecondCode  = FM_Code_Table.Traegerfrequenz(find(FM_Code_Table.Nummer==bin2dec(SecondByte)));
 




Dies liefert das gewünschte Ergebnis. Hmmmmm
Vielleich hat aber jemand'ne Idee wie ich die Char-Werte durchsuchen kann?

Nix für ungut
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 15.11.2010, 23:30     Titel:
  Antworten mit Zitat      
Hab das nicht ganz verstanden.. du willst
"In Traegerfreuenz zugehörige Frequenzen:
'nicht verwenden'
'87,6 MHz'
'87,7 MHz'
'87,8 MHz'
... "

durchsuchen?

Code:
str = '87,6 MHz'
value = str2num(regexprep(str(1:4), ',', '.'))
Private Nachricht senden Benutzer-Profile anzeigen
 
DrIngEnd
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 07:34     Titel:
  Antworten mit Zitat      
Der Struct hat folgenden Aufbau:

Nummer Binärcode Trägerfrequenz
0 00000000 nicht verwenden
1 00000001 87,6 MHz
2 00000002 87,7 MHz

usw.

Das kommt vom Radio-Daten-System RDS und kodiert mögliche Alternativfrequenzen. Ursprünglich wollte ich den Binärcode suchen (index, ismember etc.) und dann die zugehörige Frequenz auslesen. Ich habe aber schwirigkeiten mit dem Binärdcode als CHAR-Array bzw. cell. Ich suche jezt nach der Nummer. Vielleicht weis aber jemnand wie das mit char funktioniert.
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 16.11.2010, 09:54     Titel:
  Antworten mit Zitat      
Das was du hier schreibst, ist doch kein struct (dort dürfen keine Strings wie 'MHz' stehen).

Wie man nach den MHz-Frequenzen sucht habe ich im vorherigen Beitrag geschrieben, die Nummer, falls sie ein char ist, kannst du auch mit str2num in eine double (oder int) umwandeln und dann mit find() suchen.
Private Nachricht senden Benutzer-Profile anzeigen
 
DrIngEnd
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 11:30     Titel:
  Antworten mit Zitat      
Also mein struct soll folgendes abbilden:

Nummer Binärcode Trägerfrequenz
0 0000 0000 nicht verwenden
1 0000 0001 87,6 MHz
2 0000 0010 87,7 MHz
: : :
: : :
204 1100 1100 107,9 MHz

wobei Nummer reine Zahlen sind (double) Binärcode ist ein Char[256x8] da alle gleichlang, und Trägerfrequenz ist eine Cell-Variable (hdie Einträge haben unterschiedlichen Länegen). Ich wollte ursprünglich den Binärcode durchsuchen um dann auf die Trägerfrequenz zuschließen. Hierbei ist zu sagen das bei 204 nicht schluß ist sondern noch weiter Codes folgen. Zum beispiel wieviel Frequenzen folgen u.ä.. Jetzt suche ich halt nach der dezimal Zahl und kann dann auf den Rest schließen. Mich würde halt nur interessieren wie ich das Char-Array durchsuchen kann, da ich das irgenwie nicht verstehe.
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.