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

Text durchsuchen

 

Destino
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 13.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 06:51     Titel: Text durchsuchen
  Antworten mit Zitat      
Hey Leute!

Bin zur Zeit gerade am kennenlernen von Matlab und bin noch mit leichten Unklarheiten konfrontiert.

Ich möchte zur Zeit ein Programmm anfertigen dass mir eine txt. datei durchsucht und eine gewisse Stelle findet und ab da dann 40 wörter ausgibt. Dann sollen gewisse Informationen der 40 Wörter in eine neue Textdatei geschrieben werden. Kann mir da wer weiter helfen? Habe absolut keinen Ansatz....

Danke Danke

wäre euch sehr verbunden

Des
Private Nachricht senden Benutzer-Profile anzeigen


Napoleon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 07:24     Titel: a
  Antworten mit Zitat      
Hallo,

Am besten du lädst die datei hier hoch, und sag uns ab welche Stelle du einlesen möchten, und dann kann dir geholfen werden.

gruss
 
Destino
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 13.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 09:43     Titel:
  Antworten mit Zitat      
also...die datei ist ewig lang und es soll solang suchen bis es

# Physical th. Optical th. FWOT QWOT Abbr State Material
1 117.114 161.097 0.161097 0.644389 F A MgF2 heiß 2010-03 selm0,8862-0,00670
2 20.911 49.443 0.049443 0.197771 H3 A TiO2sellm4,290_,0655 mit extinktion 2010-03
3 26.004 38.226 0.038226 0.152903 L A SiO2sellm1,15_0,01
4 124.580 294.565 0.294565 1.178261 H3 A TiO2sellm4,290_,0655 mit extinktion 2010-03
5 22.287 40.754 0.040754 0.163018 A5 A alo50 heiß 2010-03 selm2,286-0,0247
6 15.985 37.797 0.037797 0.151186 H3 A TiO2sellm4,290_,0655 mit extinktion 2010-03
7 75.564 138.179 0.138179 0.552716 A5 A alo50 heiß 2010-03 selm2,286-0,0247

das hier findet. im text ist sonst nirgends

# Physical th.

vielleicht könnte man das als anhaltspunkt suchen

und dann soll es jeweils die daten von physical TH. ausgeben und die material abkürzung.

gesucht wäre ein vektor der ausgegeben wird mit BSP:

117.144 F
20.911 H3
26.004 L
124.580 H3

und so weiter...

das wäre wirklich super wenn mir jemand helfen könnte!!

Danke 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: 19.07.2010, 10:29     Titel:
  Antworten mit Zitat      
Hallo Destino,

Code:
FID = fopen(FileName, 'rb');
Line = 'dummy';
found = false;
search = '# Physical th.';
nsearch = length(search);

while ischar(Line);
   Line = fgetl(FID);
   if strncmp(Line, search, nsearch)
      found = true;
      break;
   end
end

if found
  ... Jetzt bist Du in der richtigen Zeile und kannst die weiteren Zeilen mit FGETL, FSCANF etc auslesen.
end


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2010, 07:17     Titel:
  Antworten mit Zitat      
Hey Jan.
Danke du bist eine riesen Hilfe. Wie kann ich das machen wenn ich jede X - beliebige Datei einlesen will und ist es möglich eine Funktion zu kreiiren so dass dieser Vektor mit den Zahlenpaaren ausgegeben wird?

1000x Dank und verbeugend

Des
 
Des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2010, 09:01     Titel:
  Antworten mit Zitat      
Hey Jan!

Ich schaffe es nicht dass die nächsten sieben zeilen ausgegeben werden.
wie geht denn das?

filename= B124vx.txt

bitte hilft mir jemand Very Happy

danke danke

p.s.: das forum ist der hammer
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.07.2010, 23:48     Titel:
  Antworten mit Zitat      
Hallo Des,

Um dann diese Zeilen zu lesen:
Zitat:
1 117.114 161.097 0.161097 0.644389 F A MgF2 heiß 2010-03 selm0,8862-0,00670
==> 117.144 F


Code:

function ReadTheFile(FileName, Search)
FID = fopen(FileName, 'rb');
Line = 'dummy';
found = false;
nSearch = length(Search);
while ischar(Line);
   Line = fgetl(FID);
   if strncmp(Line, Search, nSearch)
      found = true;
      break;
   end
end

if found
   for iLine = 1:7
      Line = fgetl(FID);
      [a,b,c,d,e,f] = strread(Line, '%d%f%f%f%f%s%*[^\n]', ...
                             'delimiter', ' ');
      % Jetzt sind [b] und [f] die gesuchten Werte.
      % Ausgeben kannst Du sie mit FPRINTF('%f %s\n', b, f{1})
   end
end

fclose(FID);
return;
 

Dieses Programm als M-File "ReadTheFile.m" abspeichern und aufrufen mit:
ReadTheFile(B124vx.txt, '# Physical th.')

Viel Erfolg, Jan[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 07:55     Titel:
  Antworten mit Zitat      
Danke Jan. du bist meine Rettung.

Habe es zwar gestern noch mit scanf geschafft aber bei weitem nicht so wie du.

Ein Problem habe ich es zeigt mir zwei sachen ständig an:

A function declaration cannot appear within a script M-file.

bzw. die Funktion geht nicht.

und der untere Teil funktioniert nicht so ganz...

also dieses strrread und fprintf.

Wenn du mir hier noch helfen könntest wäre ich dir sehr verbunden.

Hochachtungsvoll verbeugend und Dankend

Des
 
Fourier
Forum-Guru

Forum-Guru


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

probier mal das hier:
Code:

FileName='C:\Documents .........\Desktop\deine_datei.txt';
Search='# Physical th.';
FID = fopen(FileName, 'rb');
Line = 'dummy';
found = false;
nSearch = length(Search);
while ischar(Line);
   Line = fgetl(FID);
   if strncmp(Line, Search, nSearch)
      found = true;
      break;
   end
end

if found
    A = textscan(FID, '%*d%f%*f%*f%*f%s%*[^\n]',7,'delimiter', ' ');
end


fclose(FID);
 


in A{1} und A{2} sind dann deine daten...
das kannst du natürlich als funktion schreiben...

gruss
_________________

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 09:48     Titel:
  Antworten mit Zitat      
hey Leute ihr seid der Hammer,

tausendmal Danke! hammer!

Hätt da noch eine Fraage Rolling Eyes

Ich würde gerne die Informationen von b alle in einen Vektor schreiben also so

d_all=[1.00123E00 1.323300E01 .....]

Also sieben spalten eine Zeile hat jemand eine Ahnung wie das geht ?
in diesem Exponenten format wäre toll Very Happy

Danke Danke
hochachtungsvoll und 1000x dankend

Des
 
_Fourier

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 10:12     Titel: a
  Antworten mit Zitat      
Hi,
was steht jetzt in b ?
 
Des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 10:20     Titel:
  Antworten mit Zitat      
'Jan S' hat diesen Programmcode geschrieben und da stehen in B alles Zahlen wie z.B. 114.117 und so weiter.
ich schaffe es sie aufzurufen so dass

114.177 F3
....
...
...
...
...
...

da steht aber ich würde sie gerne noch in einem Vektor haben.

sprich

d_all=[114.117 113.122 122.333 20.1222 .... ]

kann ich das aus diesem Programmcode verwenden?

danke
des
 
Fourier
Forum-Guru

Forum-Guru


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

Code:

function ReadTheFile(FileName, Search)
FID = fopen(FileName, 'rb');
Line = 'dummy';
found = false;
nSearch = length(Search);
while ischar(Line);
   Line = fgetl(FID);
   if strncmp(Line, Search, nSearch)
      found = true;
      break;
   end
end

if found
    b=zeros(1,7);
    f=cell(1,7);
   for iLine = 1:7
      Line = fgetl(FID);
      [a,b(iLine),c,d,e,f{iLine}] = strread(Line, '%d%f%f%f%f%s%*[^\n]', ...
                             'delimiter', ' ');
      % Jetzt sind [b] und [f] die gesuchten Werte.
      % Ausgeben kannst Du sie mit FPRINTF('%f %s\n', b, f{1})
   end
end

fclose(FID);
return;

 


jetzt ist b ein vektor,

gruss
_________________

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 07:14     Titel:
  Antworten mit Zitat      
Danke das ist total nett von dir !!! Smile

Mein Matlab jedoch sagt mir ein Operator, Semi Colon or.... is missing!

Komisch. Naja werd mich auf die Fehlersuche machen jedoch solltest du schneller etwas finden meld dich.

Dankend
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 22.07.2010, 07:39     Titel:
  Antworten mit Zitat      
Hallo,

ich ich kriege keine Fehlermeldung, funktioniert einwandfrei.
wäre hilfreich wenn auch sagst in welcher zeile der Fehler auftritt.

du kannst auch im command window folgendes eintippen:
Code:


und danach deine funktion starten, dann bleibts stehen an der stelle wo der fehler passiert.

gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.