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

Vektoren auf gleiche strings untersuchen & Index speiche

 

Micha123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 12:27     Titel: Vektoren auf gleiche strings untersuchen & Index speiche
  Antworten mit Zitat      
Hallo,

ich habe ein Problem und komme einfach nicht weiter.
Ich habe aus einem *.txt-File bestimmte Variablen ausgelesen. Diese stehen in dem Zeilenvektor „vars“. z.B.: aaa yyy bbb ccc

Nun habe ich ein exel-sheet eingelesen in welchem 1024 strings in Spalte2 stehen und in Spalte1 deren Nummerierung. Die Aufteilung ist so:

0 xxx
1 yyy
2 zzz
3 ccc

Die strings in „vars“ kommen alle auch in dem exel-sheet vor. Nun will ich die strings aus dem Vektor „vars“ mit allen strings aus dem exel-sheet vergleichen. Wenn eine Übereinstimmung vorliegt, soll die zugehörige Nummer (Index - 1) in dem Vektor „Ergebnis“ gespeichert werden.


Bei diesem Beispiel wäre Ergebnis = 1
3
…

Das habe ich dazu gemacht... funktioniert aber nicht so wie es soll!
Wäre super, wenn mir jemand helfen könnte. Vielen Dank schon in voraus!


Code:


clear all; close all; clc

i=1;
j=1;
k=1;

ergebnis = cell(100,1);


[nums, txt, raw] = xlsread('D:\Projekte_Matlab\AusleseTool\Dateien\DFC_Kodierung.xls');
   

   while j<1020

       x = raw(j,2);
       y = vars(1,i);
       
    TS = strcmp(x,y);
       
     if TS==1
       j = j-1;  
       ergebnis(1,k) = j;
       i=i+1;
       j=1;
       k=k+1;
     
     elseif TS==0
        j=j+1;
         
     end
     
   end

 



Viele Grüße
Micha


dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 21:50     Titel:
  Antworten mit Zitat      
nach dem "clear all" werden keine Werte in "vars" geschrieben, wie soll das funktionieren?

Können i und k überhaupt unterschiedliche Werte annehmen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2012, 09:23     Titel:
  Antworten mit Zitat      
Hi,

Das clear all steht ganz oben, bevor ich irgendwas mache. Wenn ich das weg mache ändert sich nichts. Ich verstehe aber nicht wieso die if-Schleife nur einmal durchlaufen wird. Mein Wert für j ist bei 1020 aber mein k nur bei 2. ein Index hat er ausgelesen aber dann kommt er nicht mehr in die Schleife rein, obwohl Übereinstimmungen vorhanden sind.
Hast du eine Idee?
Viele Grüße
Micha
 
Micha123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2012, 09:29     Titel:
  Antworten mit Zitat      
... Achse zum Verständnis. In vars stehen schon meine Variablen drin, die ich zuvor aus dem txt-file extrahiert habe. Und diese will ich vergleichen mit der zweiten Spalte von 'raw'.
Ich glaube, dass ich gar nicht so weit weg bin von einer Lösung. Wäre Super wenn mir jemand helfen könnte.
Vielen dank schonmal!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.10.2012, 15:31     Titel: Re: Vektoren auf gleiche strings untersuchen & Index spe
  Antworten mit Zitat      
Hallo Micha123,

wie bereits gesagt, kann Dein Programm nicht laufen. Es enthält mehrer Bugs:
1. "vars" ist nicht definiert. Meinst du vielleicht "nums"?
2. "j" ist ein Double, "ergebnis" ein Cell.
ergebnis(1,k) = j;
Du kannst aber kein Cell mit einem Double überschreiben. Meinst Du:
ergebnis{1,k} = j;
?
Da Du aber schreibst, dass Dein Programm läuft, benutzt Du offenbar eine andere Version als die hier gezeigte. Dann können wir natürlich nicht die Probleme darin finden...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2012, 11:39     Titel:
  Antworten mit Zitat      
Hi Jan,

vielen Dank für deine Nachricht. Das stimmt, so ergibt das ganze natürlich keinen Sinn. Entschuldige!

Hier mein ganzes kleines Programm in einer leicht fortgeführten Variante!
Ich hoffe, dass du mir so helfen kannst! Vielen Dank schon in voraus!

Code:

clear all; close all; clc

a=1;
j=2;
k=1;
p=1;
ergebnis=cell(100,1);
endergebnis=zeros(100,1);


%% load XMLfile -->  Find 'DFC'  --> Ausgabe im Zeilenvektor 'vars'


[FileName, PathName] = uigetfile('D:\Projekte_Matlab\Auslesetool\Dateien\test.txt');

fid = fopen(fullfile(PathName,FileName));
txt = textscan(fid,'%s','delimiter','\n');
txt = [txt{:}];
fclose(fid);
txt  = regexp(txt,'<VT>DFC\w+</VT>','match');
txt = [txt{:}];
vars= regexprep(txt,'<VT>(\w+)</VT>','$1');


%% Einlesen des Exel-sheets --> Alle Inhalte werden in der Matrix 'raw' gespeichert


[nums, txt, raw] = xlsread('D:\Projekte_Matlab\Auslesetool\Dateien\DFC_Kodierung.xls'); %Einlesen der Datei


   
%% "DFC_Unused" aussortieren


for i=1:1:100

    unused = strcmp('DFC_Unused',vars(1,i));

  if unused == 0
    ergebnis(k,1) = vars (1,i);
    k=k+1;
  end

end
 


%% DFC's mit Exel-sheet vergleichen und gesuchte Inizies in Vektor 'Endergebnis' speichern

while j<1020

    u = raw(j,2);
    o = ergebnis(a,1);
   
    TS = strcmp(u,o);
       
     if TS==1
      j = j-1;
      endergebnis(p,1) = j;
      a=a+1;
      p=p+1;
      j=1;
     end
     
    j=j+1;
   
end
 


Grüße Micha
 
Micha123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2012, 14:35     Titel:
  Antworten mit Zitat      
... also am Ende steht im Vektor Ergebnis die aussortierten Variablen, die ich letztlich mit dem Exel-sheet vergleichen möchte. Bis dahin funktioniert auch alles.

Nur der Punkt

%% DFC's mit Exel-sheet vergleichen und gesuchte Inizies in Vektor 'Endergebnis' speichern

funktioniert einfach nicht. Wo könnte da der Denkfehler sein. Teilweise war auch EIN gesuchtes Indize in den Vektor 'endergebnis' geschrieben aber spätenstens dann war Schluss.
Wäre super, wenn jemand helfen könnte... bin am verzweifeln!
Vielen Dank!

Grüße
 
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.