|
|
Matrix um definierte Zeitwerte (Spalte1) erweitern |
|
xeres |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 21.02.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.04.2015, 14:21
Titel: Matrix um definierte Zeitwerte (Spalte1) erweitern
|
 |
|
 |
|
Hallo zusammen,
ich habe folgendes Problem:
Ich habe Datensätze mit Messwerten entsprechend der Matrix A(i,j). Da die Datensätze zur Darstellung zu gross sind (ich nutze Latex / tikzpictures) wollte ich diese Datensätze soweit reduzieren, dass sie ausschliesslich aus den maximalen Werten besteht. Für mich sind nur die y-Werte interessand die kleiner als y1 und grösser als y2 sind...
Folgendermassen habe ich das umgesetzt:
Mit dem letzten befehl konnte ich auch erfolgreich ALLE Zeilen löschen die in der zweiten Spalte eine Null enthalten.
Das Problem ist nun folgendes:
zur Darstellung ist es ungünstig das alle Zeilen (mit Null in Spalte 2) gelöscht werden.
Ich hätte gerne, dass vor und nach den überbleibenden Zeilen, die Zeile mit der Null bleibt.
Zur Verdeutlichung was ich habe und wo ich hin möchte habe ich zwei txt-files angehängt die meine maktellen file entsprechen (haben.txt) und was ich gerne hätte (will.txt)
würde mich freuen wenn mir hier jemand weiter helfen könnt.
ich hoffe ich konnte mein Problem einigermassen klar darstellen
edit winkow: bitte code umgebung benutzen
Beschreibung: |
|
 Download |
Dateiname: |
will.txt |
Dateigröße: |
56 Bytes |
Heruntergeladen: |
308 mal |
Beschreibung: |
|
 Download |
Dateiname: |
habe.txt |
Dateigröße: |
26 Bytes |
Heruntergeladen: |
289 mal |
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.04.2015, 15:03
Titel: Re: Matrix um definierte Zeitwerte (Spalte1) erweitern
|
 |
|
 |
|
Hallo xeres,
Es ist unpraktisch zwei so kleine Texte als Files im Forum zu posten. Man hat die als Leser dann in einem Editor offen, was das Lesen komplizierter macht.
Eigentlich sollte Dein Programm mit einem Fehler stoppen:
Wie wäre es damit:
Die Text-Files verstehe ich nicht. Was bedeuten die "x1, x2" etc?
Möchtest Du einfach zwischen zwei werten jeweils eine 0 einfügen?
Gruß, Jan
Mit dem letzten befehl konnte ich auch erfolgreich ALLE Zeilen löschen die in der zweiten Spalte eine Null enthalten.
Das Problem ist nun folgendes:
zur Darstellung ist es ungünstig das alle Zeilen (mit Null in Spalte 2) gelöscht werden.
Ich hätte gerne, dass vor und nach den überbleibenden Zeilen, die Zeile mit der Null bleibt.
Zur Verdeutlichung was ich habe und wo ich hin möchte habe ich zwei txt-files angehängt die meine maktellen file entsprechen (haben.txt) und was ich gerne hätte (will.txt)
würde mich freuen wenn mir hier jemand weiter helfen könnt.
ich hoffe ich konnte mein Problem einigermassen klar darstellen :oops:
edit winkow: bitte code umgebung benutzen[/quote]
Zuletzt bearbeitet von Jan S am 22.04.2015, 09:02, insgesamt einmal bearbeitet
|
|
|
xeres |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 21.02.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.04.2015, 19:38
Titel:
|
 |
|
 |
|
erstmal danke für die zügige Antwort!!!
sorry für die etwas unpraktische Darstellung meines Problems. Aber mir fällt es etwas schwer das Problem genau zu beschreiben. Wie man höchstwahrscheinlich sieht bin ich eine absolute Pfeife in MatLab, dies kommt noch erschwerend dazu :p
Zitat: |
Eigentlich sollte Dein Programm mit einem Fehler stoppen: |
ja das tut es wenn ich für i=1:length(t) eingebe.
mit i=2:length(t) konnte ich dies jedoch beheben. Da es danach funktioniert hat und die ausgegebenen Werte stimmen habe ich mir keine weiteren Gedanken dazu gemacht.
da ich deinen vorgeschlagenen Code nicht ganz verstehe habe ich ihn einfach mal eingefügt um zu sehen was passiert. jedoch erhalte ich eine Fehlermeldung:
Zitat: |
Error using >
Matrix dimensions must agree. |
ich denke aber, dass ich mein Ziel oder mein Problem nicht ganz klar machen konnte.
Ich lese meine Messdaten ein.
Zur Auswertung ist es wichtig die Maxima gegenüberzustellen. Darum habe ich erstmal alle Daten die kleiner als y1 und grösser als y2 sind mit Hilfe der for-Schleife genullt
Zitat: |
for i=2:length(t)
if (a_t(i) < y1 && a_t(i) < a_t(i-1) && a_t(i) < a_t(i+1))
a_t1(i) = a_t(i);
elseif (a_t(i) > y2 && a_t(i) > a_t(i-1) && a_t(i) > a_t(i+1))
a_t1(i) = a_t(i);
else
a_t1(i) = 0;
end
end
|
Da ich zum einlesen in Latex nur einen begrenzten Speicher habe benötige ich alle Zeilen die A(:,2)=0 nicht. Darum habe ich sie mit
Zitat: |
V(find(V(:,2) == 0), = [];
|
gelöscht.
Dies verfälscht mir jedoch meine Darstellung, da ich jetzt grosse Zeitabschnitte deren y-Wert ic hgenullt habe. Daraus resultiert eine flache Steigung der Kurve.
Um diesen Fehler zu beheben würde ich gerne in der Matrix V, die aus n Zeilen besteht, vor und nach jeder Zeilte eine Zeile einfügen.
So dass in der zweiten Spalte eine 0 und in der ersten Spalte die zugehörige Zeit steht ( delta t ist bekannt).
Also wenn man das Problem auch anders lösen kann bin ich natürlich offen für Vorschläge
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|