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

String auslesen aus .txt

 

anirac01
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2010, 10:43     Titel: String auslesen aus .txt
  Antworten mit Zitat      
Hallo,

Ich habe hier im Forum nun schon ne weile rumgestöbert aber 'noch' nichts passendes für mein Problem gefunden.

Ich habe ein .txt File mit folgendem Inhalt:
constant c_RX_1 : std_logic_vector(23 downto 0) := x"000000";
constant c_RX_2 : std_logic_vector(23 downto 0) := x"000001";
constant c_RX_3 : std_logic_vector(23 downto 0) := x"000004";
constant c_RX_4 : std_logic_vector(23 downto 0) := x"000005";

nun möchte ich mit Hilfe von Matlab sowohl den Konstanten Namen (Bsp. c_RX_1) als auch den Wert (Bsp. x"000000") auslesen.

Das auslesen der Werte ist kein Problem hab ich folgendermaßen gelöst:

Code:
file='rx_constants.txt';

fid=fopen(file,'r');
k=1;
while(1)
    line=fgetl(fid);
    if ~ischar(line), break, end
    c_input_string(k,1)=hex2dec(sscanf(line,'%*s %*s : %*s := x"%[0123456789abcdefABCDEF]"'));
    k=k+1;
end  
 
fclose(fid);


Dies funktioniert auch wunderbar, nun habe ich meinen Code um folgende Zeile erweitert um den String auszulesen :

c_input_string_char(k,1)= sscanf(line,'%*s %s : %*s %*s %*d ) := %*s');

nun bekomme ich immer eine Fehlermeldung:
"??? Subscripted assignment dimension mismatch."

Ich habe auch schon ein wenig damit rumgespielt, das text file erst mal abespeckt so das dieser Teil (23 downto 0) und das nach dem := nicht mehr drin ist um es zu schaffen den String vorne auszulesen, mit dieser Zeile:

c_input_string_char(k,1)= sscanf(line,'%*s %[a-z,A-Z,0-9] : %*s := ');

nun wird mir aber nur das c ausgelesen, klar da Matlab den Unterstrich nicht erkennt.

kann mir einer Helfen und sagen wie ich das hinbekommen kann,

Grüße
und Danke schon mal
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 16.09.2010, 18:56     Titel:
  Antworten mit Zitat      
schau Dir bitte
Code:
im Maatlab Help an.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2010, 10:57     Titel:
  Antworten mit Zitat      
Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2010, 14:48     Titel:
  Antworten mit Zitat      
jetzt hab ich eine c_input_string_char vom Wert 3*1 cell,
wenn ich mir das anschaue im Variablen Editor steht in jeder Zeile die erwartete Variable.

Nun möchte ich diese Variable als Name haben, und dieser variablen dann einen wert zuweisen,
wenn ich aber eine der Variablen nehme ist es eine 1*1 cell

wie kann ich das konvertieren?
ich finde nichts passendes, hast du noch einen Tip?

1.versuch:
c_input_string_char(k,i)= textscan(line,'%*s %27c : %*s := x"%[0123456789abcdefABCDEF]"');

2.versuch:
Code:
file='gsm_register_rx_constants.txt';

fid=fopen(file,'r');
k=1;
i=1;
while(1)
    line=fgetl(fid);
    if ~ischar(line), break, end
    % c_input_string(k,1)=hex2dec(sscanf(line,'%*s %*s : %*s := x"%[0123456789abcdefABCDEF]"'));
    c_input_string_char(k,i)= textscan(line,'%*s %27c : %*s := x"%[0123456789abcdefABCDEF]"');
    k=k+1;
    i=i+1;
end  
 
fclose(fid);


param.c_input_string_char(1,1)      = c_input_string(1);
param.c_input_string_char(2,1)      = c_input_string(2);
 


vorher habe ich von hand diese variablen namen geschrieben:
param.c_1 = c_input_string(1);

nun will ich das c_1 quasi mit aus dem .txt file auslesen
ich speicher das ganze in einem Struct, und benutze es in anderen m-files auch noch. das text file ändert immer mal die reihenfolge so dass ich das immer von hand editieren müsste, wenn ich aber die variablen namen gleich mit einlesen kann wäre das geshickter.

ich finde nicht raus wie ich das machen kann, ich verzweifle noch dabei ist das sicher nicht so schwer.
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2010, 15:37     Titel:
  Antworten mit Zitat      
vor erst erledigt danke Smile

ok doch nicht...

ich hab nun folgendes:
Code:
file='gsm_register_rx_constants.txt';

fid=fopen(file,'r');
k=1;

while(1)
    line=fgetl(fid);
    if ~ischar(line), break, end
    % c_input_string(k,1)=hex2dec(sscanf(line,'%*s %*s : %*s := x"%[0123456789abcdefABCDEF]"'));
    c_input_string_char = textscan(line,'%*s %27c : %*s := x"%[0123456789abcdefABCDEF]"');
    c_variable(k,1)      = c_input_string_char(1);
    c_input_string(k,1)  = c_input_string_char(2);
    k=k+1;
end  
 
fclose(fid);



hab dann zwei cell arrays und will nun sagen
das das erste element aus c_variable den ersten wert aus c_input_string zugewiesen bekommt.
so das dann da stehen würde:

c_a = 46

doch noch ein tip? irgendwer?
wenn ich es nicht genau genug erklärt habe mache ich das auch gern nochmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 07:15     Titel: HILFE
  Antworten mit Zitat      
Hilfe...Ich bekomme das einfach nicht hin

Ich könnte ja mal meine 3 files anhängen wenn es hier jemanden gibt der mir helfen kann?
Ich möchte immer noch aus einem .txt file Werte auslesen und weiter verwenden.
Im Moment les ich nur werte aus und weiße die auf festgelegte variablen zu, nur können sich diese variablen ab und an ändern, um dann nicht immer den ganzen Matlab code ändern zu müssen, würde ich gerne auch die variablen namen auslesen und diese dann auch als variablen namen nutzen

Irgendeiner der Helfen kann?

so sieht mein Code aus:
Code:
file='constants.txt';

fid=fopen(file,'r');
k=1;

while(1)
    line=fgetl(fid);
    if ~ischar(line), break, end
    % c_input_string(k,1)=hex2dec(sscanf(line,'%*s %*s : %*s := x"%[0123456789abcdefABCDEF]"'));
    c_input_string_char = textscan(line,'%*s %27c : %*s := x"%[0123456789abcdefABCDEF]"');
    c_variable(k,1)      = c_input_string_char(1);
    c_input_string(k,1)  = c_input_string_char(2);
    k=k+1;
end  
 
fclose(fid);


param.c_input_string_char(1,1)      = c_input_string(1);
param.c_input_string_char(2,1)      = c_input_string(2);
param.c_input_string_char(3,1)      = c_input_string(3);
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2010, 14:49     Titel: Re: HILFE
  Antworten mit Zitat      
Hallo anirac,

ich verstehe Dein Problem immer noch nicht. Kannst Du die Frage weiter vereinfachen?
Das Einlesen aus dem File ist für die eigentliche Frage nicht wichtig, oder?
Beschreibe nochmal die Typen und Werte der Variablen, die Du hast, und die genaue Form des Structs, das Du gerne hättest.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 14:53     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Anwtort Smile
Also ich hab es nun hinbekommen, mein Struct sieht so aus wie er aussehen soll und ich hab daher diesbezüglich keine Frage mehr Wink

aber wenn ich es nochmal so lese merke ich doch auch das es nicht ganz so verständlich dargestellt ist.

hast du mir vielleicht nen Tip wie ich zwei structuren miteinander auf inhalt vergleichen kann?
Also eine abfrage ob zwei strukturen gleich sind, und wenn net eine kleine Fehlermeldung raus geben?

Grüße
und danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2010, 15:57     Titel:
  Antworten mit Zitat      
Hallo anirac01,

Meinst Du ISEQUAL ?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2010, 12:32     Titel:
  Antworten mit Zitat      
Hallo Jan,

also isequal funktioniert gut Smile

gibt es eine Funktion die vergleicht ob sie gleich sind, und wenn sie nicht gleich sind anzeigen kann wo der unterschied ist?

und noch eine Frage, einen Struct möchte ich fest als vergleichswert speichern, mache ich das mit nem .mat file? also wenn ich ja den variableneditor geöffnet hab und dann das struct speichere, bekomm ich ein .mat file.
Nun möchte ich meinen Struct den ich habe, mit dem Struct in dem .mat file vergleichen, verstehst du meine Frage?

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.10.2010, 00:01     Titel:
  Antworten mit Zitat      
Hallo anirac,

Zitat:
gibt es eine Funktion die vergleicht ob sie gleich sind, und wenn sie nicht gleich sind anzeigen kann wo der unterschied ist?

Nein. Leider müsste diese Funktion unendlich viele Ausnahmen berücksichtigen. Das läßt sich mit einer rekursiven Funktion zwar meistern, aber eine allgemeiner Verhleich ist doch recht schwierig.

Zitat:
und noch eine Frage, einen Struct möchte ich fest als vergleichswert speichern, mache ich das mit nem .mat file?

Ja. Structs speichert man am besten in einem MAT-File.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2010, 09:34     Titel:
  Antworten mit Zitat      
hallo jan,

ich weiß nun wie ich das mache Smile

danke danke
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.