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

Datenimport von .txt-Dateien aus Ordnerstruktur

 

Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 29.08.2017, 16:40     Titel:
  Antworten mit Zitat      
Habe das Problem selbst gelöst. War ein Denkfehler. Habe es nun so gelöst:
Code:
for i=1:1:length(files)
    for j=1:1:length(Tiefe)
        tmp = Data{i}{1,2:end}-Tiefe(j);
        [A(j,i) index(j,i)]=min(abs(tmp)); % sucht das Minimum zwischen dem Tiefe-Wert und den Messwerten
        index(j,i)=index(j,i)+1; % +1, da erst ab zweiter Spalte gesucht wird
      if Tiefe(j)>Data{i}{1,end}
          index(j,i)=NaN;
      end
        end
end

Wenn ich Tiefe vorgebe und beispielsweise dann meine Indexmatrix erhalte, sieht sie so aus:
Code:
 
23   22   45
43   42   54
63   62   56
83   82   NaN  
103   NaN   NaN  

Im nächsten Schritt möchte ich über die Länge der Spalten Plots erstellen. Ich erhalte aber eine Fehlermeldung, da ich für die NaN-Einträge keine Werte habe. Wie kann ich die NaN-Einträge ersetzen, dass er über length(Index(:,Spalte)) für das Beispiel (5,4,3) erhalte?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2017, 20:37     Titel:
  Antworten mit Zitat      
Hallo,

so?
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 30.08.2017, 12:20     Titel:
  Antworten mit Zitat      
Genau das habe ich gesucht! Funktioniert jetzt soweit, dass ich aus vorgegebenen Werten die ähnlichsten rausfiltere und plotten kann.

Code:


Das ganze möchte ich nun noch für die Zeit haben. Hier möchte ich sowohl einen einzelnen Tag als auch Zeiträume vorgeben und diese Einträge dann rausfiltern.

Ist es möglich, dass ich beispielsweise vorgebe: "30.08.2017" und er sucht mir dann aus Data{1}{2:end,1} diesen Tag raus, obwohl die Zellen mittlerweile als 'dd.MM.yyyy HH:mm:SS' abgespeichert sind?

Wie müsste ich meinen Vorgabevektor dann definieren?
Code:
Tag='30.08.2017';
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2017, 12:31     Titel:
  Antworten mit Zitat      
Hallo,

versuchs mal mit isbetween .

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 30.08.2017, 18:28     Titel:
  Antworten mit Zitat      
Funktioniert soweit bis auf eine Kleinigkeit:
Code:
a= isbetween(Data{1}{2:end,1},tlower,tupper);
for i=1:1:size(Data{1})-1
    if a(i) == 1
        b(i)=i+1;
    end
end
plot(Data{1}{b(1):b(end),1},Data{1}{b(1):b(end),2});

In b werden leider 0 Werte gespeichert, obwohl diese doch eigentlich über die if-Bedingung nicht mit reingeschrieben werden sollten. Warum macht er das trotzdem?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2017, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

wenn beispielsweise b(3) gesetzt wird ohne dass vorher b(2) gesetzt wurde, dann wird b(2) auf 0 gesetzt. Was soll denn an der Stelle sonst stehen? "Nichts" gibt es bei numerischen Arrays nun mal nicht, höchstens NaN.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 31.08.2017, 07:07     Titel:
  Antworten mit Zitat      
Ich dachte, er erstellt einen Vektor mit der Länge, die entsprechend die Bedingung erfüllen. Wo ist mein Denkfehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2017, 08:11     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich sicher wäre, was du erreichen willst, könnte ich dir das sagen. Meinst du vielleicht
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 31.08.2017, 08:27     Titel:
  Antworten mit Zitat      
Ich suche nach einem Zeitraum. In a wird dann geprüft, ob sich die Werte im Array im Zeitraum befinden oder nicht. a wird dann mit 0 oder 1 ausgegeben. Ich möchte nun die Indizies der 1-Werte.

Da soll noch eine die Schleife rum, sodass ich nicht nur in Data{1}, sondern Data{j} suchen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2017, 08:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich möchte nun die Indizies der 1-Werte.

... und genau das liefert doch mein Vorschlag?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 31.08.2017, 12:37     Titel:
  Antworten mit Zitat      
Ja, funktioniert. Hatte es vorher nicht ausprobiert.

Habe jetzt noch zwei Fragen zu plot:
1. Ich habe einen langen Zeitraum und mit den anderen y-Werten wird der plot rechteckig erstellt, sodass es sehr zusammengedrückt aussieht. Kann man einstellen, dass der plot die x-Achse weiter "ausdehnt"?

2. Ich habe versucht über
Code:
datetick('x','dd.MM.yyyy HH:mm:SS');

die x-Achse zu gestalten. Ich würde gerne, dass die Achse ein wenig vor den ersten Daten beginnt, dann im Intervall von 3 Monaten und ein wenig nach den letzten Daten beschriftet wird. Zusätzlich nimmt das Format jede Menge Platz ein, sodass ich die Uhrzeit am liebsten in der Zeile darunter hätte. Wie bewerkstellige ich das? bin bei xtick, axes, xticklabel nicht fündig geworden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2017, 12:50     Titel:
  Antworten mit Zitat      
Hallo,

axis / xlim sollte helfen.

Wenn du auf der x-Achse Datumsangaben hast, brauchst du kein datetick. Da kannst du das Anzeigeformat direkt im Plot-Befehl über 'DatetimeTickFormat' setzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 31.08.2017, 16:09     Titel:
  Antworten mit Zitat      
Habe leider keinen Erfolg dabei, die x-Achse zu skalieren. Bisher wird die Achse automatisch alle halbe Jahre automatisch geteilt. Ich bräuchte allerdings 3-monatige Intervalle, die zum 01. beginnen. Kann ich das durch einen Vektor mit vorgegebenen werten bewerkstelligen oder gibt es da was einfacheres?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2017, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

geht es um die Intervallgrenzen oder die Ticks dazwischen?
Ein reproduzierbares Beispiel wäre mal wieder hilfreich.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lenhold
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 19.08.17
Wohnort: ---
Version: Release 2016b
     Beitrag Verfasst am: 31.08.2017, 21:35     Titel:
  Antworten mit Zitat      
Sowohl als auch:
Code:
tlower=datetime('01.09.2014');
tupper=datetime('01.09.2016');
xlim([tlower,tupper]);
     xtickformat('dd.MM.yyy');

Meine Grenzen werden nicht beschriftet und die Ticks würde ich gerne auf '01.MM.yyyy' setzen. Meine Daten sind nicht komplett durchgängig, es fehlt hin und wieder mal ein Tag.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3, 4  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 - 2024 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.