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

Suchen -Finden - Vektor

 

Des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2010, 14:43     Titel:
  Antworten mit Zitat      
Danke Jan!!! Das ist der Hammer!

So abschließend eine letzte Frage dann bin ich wirklich mal fertig Very Happy

könnte mir jemand helfen diese zwei Programm zu einem Machen und ich hab keine Ahnung warum bei dem" mit den Materialien suchen und in Vektorform ausgeben"-Programm kein Resultat herauskommt. Sprich mein Vektor fehlt mit den Werten. Ich bitte euch um ein letztes Mal Hilfe.

Danke Danke

Des

Programm 1: liest den Text ein und sucht den Vektor mit Materialien und co:

Code:

n_layer=7;

FID = fopen('B124v5 g10.OUT', 'rb');



Line = 'dummy';
found = false;

Search ='   #  Physical'

nSearch = length(Search);


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

if found
    n=zeros(1,n_layer);
    d_all=zeros(1,n_layer);
    opticalth=zeros(1,n_layer);
    FWOT=zeros(1,n_layer);
    QWOT=zeros(1,n_layer);
    mat_all=cell(n_layer,1);
    State=cell(n_layer,1);
    Material=cell(n_layer,1);
   


   
    for iLine = 1:n_layer
      Line = fgetl(FID);
     
     
     
      [n(iLine),d_all(iLine),opticalth(iLine),FWOT(iLine),QWOT(iLine),mat_all(iLine),State(iLine),Material(iLine)] = strread(Line, '%d%f%f%f%f%s%s%[^\n]s', 'delimiter', ' ');
                         
                     end;
                 end;  
                 


Programm 2: das die Werte aus dem jetzt vorhanden Vektor Material nimmt und mit Hilfe von diesen sucht und einen Vektor ausgeben soll mit den neuen Suchergebnissen:

hier ist es mit einem Beispiel aus dem vektor MgF2. Es sollte aber eigentlich einfach von selbst die Daten aus dem Vektor "Material" nehmen und Suchen.
Geht das?

Code:

Material={
'MgF2 heiß 2010-03 selm0,8862-0,00670',
'TiO2sellm4,290_,0655 mit extinktion 2010-03',
'SiO2sellm1,15_0,01',
'TiO2sellm4,290_,0655 mit extinktion 2010-03',
'SiO2sellm1,15_0,01',
'TiO2sellm4,290_,0655 mit extinktion 2010-03',
'SiO2sellm1,15_0,01'};
k=1;
for ii=1:1:6
    search=Material{ii};
    while(1)
        line=fgetl(fid);
        if findstr(line,search)>=1
            if (strcmp(search,'MgF2 heiß 2010-03 selm0,8862-0,00670')==1)
                A(k)= strread (fid,'   %*s =   %f',2,'headerLines',3);
                k=k+1;
            else
                A(k)= strread(fid,'   %*s =   %f',2,'headerLines',4);
                k=k+1;
            end
            break;
        end
    end
end

for ii=1:1:6
    vector(ii,:)=reshape(A{ii},[2,1]);
   
end
 


Wenn mir hier jemand behiflich sein könnte wäre ich sehr verbunden!
Danke


khscv<sb

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2010, 15:00     Titel: df
  Antworten mit Zitat      
beim 2.Programm
fehlt der ganze vector mit seinen werten, kommt fehler?
oder du siehst nur nichts am bildschilm ausgegeben?

mach mal in der letzten vorschleife (vector(ii,Smile.....)
den semicolon weg.
 
des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2010, 15:33     Titel:
  Antworten mit Zitat      
also der vektor ist auch nicht im Workspace erwähnt. also nicht vorhanden. ändert auch nichts.
jedoch verweist das programm auf line 20
strread...

danke

des
 
des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 07:05     Titel:
  Antworten mit Zitat      
Falls mir jemand helfen könnte wäre das super Smile

Danke
 
des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 07:26     Titel:
  Antworten mit Zitat      
Was ich eigentlich nur brauchen würde das mir jemand bei der Suchfunktion mit Material hilft und das textscan durch strread ersetzt weil ich das zwar probiere aber ich es nicht auf die Reihe bekomm.

Danke Danke

Des
 
Napoleon
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 22.07.10
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 28.07.2010, 07:44     Titel:
  Antworten mit Zitat      
Hallo,

1. bei mir funktioniert strread auch nicht.
2.textscan funktioniert bei mir aber nachdem du Material angepasst hast funktioniert natürlich nicht.

weil:
du hast am anfang gesagt du willst nur A1 und A2 lesen.
wenn ich mir den 5.string bei Material anschaue sehe ich :
'SiO2sellm1,15_0,01'.

in der textdatei steht unter diesem String folgendes:
Zitat:

Layer material # 6 (L, Active): SiO2sellm1,15_0,01
Comment: No comment
n given by the dispersion table (linear interpolation)
k given by the dispersion table (linear interpolation)
Wavelength n k
350.0000 1.501000 0.0000000000
400.0000 1.492000 0.0000000000
450.0000 1.487000 0.0000000000
500.0000 1.483000 0.0000000000
550.0000 1.480000 0.0000000000
600.0000 1.477000 0.0000000000
650.0000 1.476000 0.0000000000
700.0000 1.474000 0.0000000000
750.0000 1.473000 0.0000000000
800.0000 1.472000 0.0000000000
850.0000 1.472000 0.0000000000
900.0000 1.471000 0.0000000000
950.0000 1.471000 0.0000000000
1000.0000 1.470000 0.0000000000
1050.0000 1.470000 0.0000000000
1100.0000 1.470000 0.0000000000

da ist nix mit A1 und A2, und auch textscan bleibt natürlichhängen.

viele grüsse
Private Nachricht senden Benutzer-Profile anzeigen
 
Napoleon
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 22.07.10
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 28.07.2010, 07:50     Titel:
  Antworten mit Zitat      
und noch was diese Zeile:
Code:

if (strcmp(search,'1,88 N-LASF31A')==1)
                A(k)=textscan(fid,'   %*s =   %f',2,'headerLines',3);
                k=k+1;
 


habe ich nur geschrieben weil in der textdatei nur bei dem String :'1,88 N-LASF31A', die A0 fehlte deswegen musste ich nur 3 Zeilen überspringen,
ansonsten immer 4.

also musst du schauen was du wirklich machen willst.
Private Nachricht senden Benutzer-Profile anzeigen
 
Destino.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 08:58     Titel:
  Antworten mit Zitat      
also...
hab jetzt eine typischere Datei raufgeladen. Die ist um welten besser.

also schritt 1:

Code:

n_layer=12;

FID = fopen('..........' , 'rb');



Line = 'dummy';
found = false;

Search ='   #  Physical'

nSearch = length(Search);


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

if found
    n=zeros(1,n_layer);
    d_all=zeros(1,n_layer);
    opticalth=zeros(1,n_layer);
    FWOT=zeros(1,n_layer);
    QWOT=zeros(1,n_layer);
    mat_all=cell(n_layer,1);
    State=cell(n_layer,1);
    Material=cell(n_layer,1);
   


   
    for iLine = 1:n_layer
      Line = fgetl(FID);
     
     
     
      [n(iLine),d_all(iLine),opticalth(iLine),FWOT(iLine),QWOT(iLine),mat_all(iLine),State(iLine),Material(iLine)] = strread(Line, '%d%f%f%f%f%s%s%[^\n]s', 'delimiter', ' ');
                         
                     end;

 


durchsucht das Programm bis zur Zeile

# physical th. QWOT FWOT .....

Hier entnimmt es alle Zahlen und kreirt 8 Vektoren.
Für jede Spalte ein Vektor.
Darunter befindet sich der Vektor Material:

TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01
TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01
TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01
TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01
TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01
TiO2sellm4,35_,053 ohne extin
SiO2sellm1,15_0,01

jetzt soll ein programm diese Einträge nehmen und mit Hilfe von diesen den Text durchsuchen bis es dieses
Layer Material # .....= SiO2sellm1,15_0,01 bzw. Tio2...
und dann diese
A1=
A2=
einlesen und alle in einem Vektor schreiben
also steht im ersten Eintrag:
A1,A2 %von Tio
A1,A2 %von Sio
.
.
.

Problem: ich habe nur Matlab 6.5 - kennt keinen textscan. Vorschläge, Anregungen und desweiteren sehr sehr gerne.

Ein letztes Mal helfen bitte.
Bin kurz vorm Verzweifeln.

Dankend

Destino

Testdatei1.1.txt
 Beschreibung:

Download
 Dateiname:  Testdatei1.1.txt
 Dateigröße:  48.27 KB
 Heruntergeladen:  617 mal
 
des

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 12:22     Titel:
  Antworten mit Zitat      
hab es jetzt so gut wie er findet die richtige Zeile.

So kann mir bitte bitte bitte jemand helfen und mir sagen wie ich mit strread dann wenn er die Zeile gefunden hat, A1 und A2 speichert.

Beispiel:
Layer material # 3 (H, Active): TiO2sellm4,35_,053 ohne extin
n given by Sellmeier 1 formula
Coefficients:
A0 = 1.00000E+000
A1 = 4.35000E+000
A2 = 5.30000E-002

es sollte dann

A1 und A2 in A gespeichert werden.
Bitte helft mir.

Danke Danke
 
Destino.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 13:38     Titel:
  Antworten mit Zitat      
des hat Folgendes geschrieben:
hab es jetzt so gut wie er findet die richtige Zeile.

So kann mir bitte bitte bitte jemand helfen und mir sagen wie ich mit strread dann wenn er die Zeile gefunden hat, A1 und A2 speichert.

Beispiel:
Layer material # 3 (H, Active): TiO2sellm4,35_,053 ohne extin
n given by Sellmeier 1 formula
Coefficients:
A0 = 1.00000E+000
A1 = 4.35000E+000
A2 = 5.30000E-002

es sollte dann

A1 und A2 in A gespeichert werden.
Bitte helft mir.

Danke Danke


oder mit Textread, oder fscanf ganz egal
Bitte um Hilfe Smile
 
Destino.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 15:02     Titel:
  Antworten mit Zitat      
hey Leute,

kommt mir so vor als würd ich gerade mit mir selber schreiben Laughing

Code:


file='K:\Ferial\Philipp\B562v1.OUT';
fid=fopen(file,'r');

n_layer=12
Material={
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01',
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01',
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01',
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01',
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01',
'TiO2sellm4,35_,053 ohne extin',
'SiO2sellm1,15_0,01'};
k=1;
for ii=1:1:n_layer
    search=Material{ii};
    while(1)
        line=fgetl(fid);
        if findstr(line,search)>=1
            A=zeros(n_layer,1);
          line =  fgetl(fid);
          line =  fgetl(fid);
          line =  fgetl(fid);
         
         
          for iLine = 1:2
              line = fgetl(fid)
             
A=fscanf(fid,'%*s %f','delimiter','=')
         
                k=k+1;
                break;
            end
        end
    end

 sellm=zeros (n_layer,1);
 
for ii=1:1:n_layer
 
    sellm(ii,:)=reshape(A{ii},[2,1])
   
end
end;
fclose;
 


hätte das jetzt so gelöst. Aber ist noch nicht das wahre - es sagt mir das bei scanf zu viele Argumente sind.
bin mit fgetl genau in der Zeile mit A1
jetzt würde ich nur fscanf umschreiben müssen so dass es mir in dieser und der nächsten Zeile nur die Zahl einliest.

Ich hätte einfach gern so einen Vektor der
(A1,A2) hat.
einfach mit einem Komma aneinander geschrieben.

das wäre super.

Danke für die Zeit, die ihr euch nehmt.

Danke
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 28.07.2010, 15:27     Titel:
  Antworten mit Zitat      
Lieber Destino,

Erstens) guck mal bitte in deiner textdatei nach, und zähle wie oft die folgende Zeile vorkommt:

SiO2sellm1,15_0,01 (Material(2))

Zweitens) unter diese Zeile ist weder A0 noch A1 noch sonst irgendwas.

wie soll hier MATLAB wissen was zu lesen ist, ich sehe keine Struktur...??

unglaublich...

gruss
_________________

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2010, 07:20     Titel:
  Antworten mit Zitat      
Lieber Fourier,

es ist schon vorhanden, wahrscheinlich hast du es übersehen es gibt zwei Materialien einmal.

TiO2sellm4,35_,053 mit Extinktion
und einmal
TiO2sellm4,35_,053 ohne extin

und unter Tio2 mit Ext steht kein A1 und A2

Aber unter Tio2sellm ohne extin steht A1 und A2.
' Layer Material #3'...


das selbe bei Sio2... nur hier heißt es mit Tab. und einfach ohne.
Also gibt es sie schon ich möchte ja hier mit


Zitat:


# Physical th. Optical th. FWOT QWOT Abbr State Material
1 28.187 68.336 0.097622 0.390490 H A TiO2sellm4,35_,053 ohne extin
2 43.864 64.674 0.092392 0.369568 L A SiO2sellm1,15_0,01
....


der letzten Spalte suchen und hier steht ohne extin und auch nichts von Tab.

deswegen geht es.
Meine Suche findet auch die richtige Zeile und alles nur fehlt mir eben der Befehl, der das ganze in einen Vektor liest.

Danke
Liebe Grüße
 
Fourier
Forum-Guru

Forum-Guru


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

ich glaube wir verstehen uns nicht. guck dir das bild an das angehangt habe.
wenn deine schleife an Material{2} ankommt. sucht MATLAB den String
in Material{2} in der textdatei. er findet schon den String aber drunter
ist kein A1, und A2.

oder verstehe ich alles falsch. ich will dir wikrlich helfen dass wir dich endlich loswerden Very Happy (nicht böse gemeint)

grüsse

kkk.JPG
 Beschreibung:

Download
 Dateiname:  kkk.JPG
 Dateigröße:  95.47 KB
 Heruntergeladen:  406 mal

_________________

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2010, 08:33     Titel:
  Antworten mit Zitat      
Ich glaube du verstehst mich hier nicht wirklich.

Aber egal ich werds selber machen, dann habt ihr mich los Wink
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.