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

File einelsen

 

anirac01
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2010, 09:25     Titel: File einelsen
  Antworten mit Zitat      
Hilfe,

Ich habe ein Problem,
ich möchte mit Matlab ein .txt File einlesen.
in diesem File sind die Daten folgendermaßen drin:
000000
000001
000010
000011
000100
000101
000110
000111
001000
001001

d.h. Zeile für Zeile ein binärer Wert,
nun möchte ich jeden binären wert einer variablen zuweisen und in dezimal umwandeln,

mit
Code:

fid                      = fopen('read_register_constants.txt', 'r');
c_input_string      = fscanf(fid, '%s');
fclose(fid);
 


habe ich es probiert, leider funktioniert es so nicht,
es wird zwar eingelesen und ich kann zeile für zeile zuweisen
und hab dann die zahlenfolge in der variablen, jedoch ist es ein
falsches format

hat jemand ein Tip? ist eine andere Funktion als fscanf für Binärwerte besser?

Würde mich über Hilfe freuen,
danke Smile

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 27.08.2010, 10:38     Titel:
  Antworten mit Zitat      
Hallo,

mir ist das hier eingefallen, geht vlt viel einfacher:
Code:

 file='----------------------';
 fid=fopen(file,'r');
 k=1;
 while(1)
     line=fgetl(fid);
     if ~ischar(line), break, end
     V(k,1)=bin2dec(line);
     k=k+1;
 end
 


gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2010, 11:45     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank,
das scheint zu funktionieren Smile

Freu mich über die schnelle Hilfe Smile

vielleicht hast du auch für folgendes ne idee (ist mein weiterfhrender Wunsch)
Meine txt datei besteht aus vielen Zeilen jede Zeile sieht wie folgt aus:
constant C_1 : std_logic_vector := "000000";
constant C_2 : std_logic_vector := "000001";
constant C_3 : std_logic_vector := "000010";

nun möchte ich wieder das file einlesen aber nur die Werte in "" will ich (so wie bereits oben) bestimmten Variablen zuordnen.

mach ich das auch so:
Code:

 file='read_register_constants.txt';
 fid=fopen(file,'%s' '%s' %s %s %s %?, 'r'); <-- was steht denn für ein binäres element?
 k=1;
 while(1)
     line=fgetl(fid);
     if ~ischar(line), break, end  <-- ist -1 kein char?
     c_input_string(k,1)=bin2dec(line);
     k=k+1;
 end

fclose(fid);
 

grüße


Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 27.08.2010, 12:23     Titel:
  Antworten mit Zitat      
Hallo,

probier mal das:
Code:

 fid=fopen(file,'r');
 k=1;
 while(1)
     line=fgetl(fid);
     if ~ischar(line), break, end
     V(k,1)=bin2dec(sscanf(line,'%*s %*s : %*s := "%[01]"'));
     k=k+1;
 end
 


Code:


mit dieser funktion kannst du testen ob es ein char ist oder nicht.

gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2010, 11:48     Titel:
  Antworten mit Zitat      

File einelsen
Klicke hier, um den Artikel bei Amazon.de anzuschauen.

juhu vielen Dank,
nun hätte ich noch eine weitere frage, das einzulesende File ist nahezu das selbe wie weiter oben bereits erwähnt, nur handelt es sich am ende um eine Hex zahl:

constant C_1 : std_logic_vector := x"00";
constant C_2 : std_logic_vector := x"01";
constant C_3 : std_logic_vector := x"02";
constant C_4 : std_logic_vector := x"03";

also auch so:
Code:

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 := "%[01]"'));  <-- was macht denn dieser Teil mit %[01] genau? also in[] ist eine zeichensequenz, aber warum mit% und in ""? und die 01 steht für etwas bestimmtes? ich suche schon die ganze zeit in der matlab hilfe aber finde da nicht dazu, ich such eventuell an der falschen stelle?
    k=k+1;
end  
 
fclose(fid);
 


aber irgendwas muss ich in der klammer noch ändern, damit matlab das x vorher erkennt oder?

gruß

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2010, 13:58     Titel:
  Antworten mit Zitat      
Folgendermaßen habe ich es nun gelöst (hab noch eine Hilfe auf der mathworks Seite gefunden)

Code:

file='write_register_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);
 



Danke für die Hilfe
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.