Verfasst am: 18.10.2018, 15:46
Titel: Werte in Matrix suchen und durch Wert Zeile-1 vorher ersetze
Hallo Leute,
habe eine Matrix die wie im angehängten Bild aussieht.
Ich suche nach allen Werten die größer sind als 3.019 (in diesem Beispiel).
Die Werte sollen dann mit dem letzten gültigen Wert in der Spalte ersetzt werden.
Leider bekomme ich das nicht so hin... ich weiß nicht ob ich mir das gerade kaputt denke oder das wirklich nicht so einfach ist.
Im Moment ersetze ich alle einfach mit NaN und das mit folgendem Code:
ersetzen. Nur wollte ich das Problem mit einer for-Schleife lösen bekomme aber nicht das gewünschte Ergebnis.
Und die nächste Schwierigkeit ist es... das die selben Positionen die für die zu großen Werte gefunden worden sind in 5 andere Matrizen anzuwenden und die dort jeweiligen letzten Werte der Spalten für die zu großen Stellen zu ersetzen.
Ich hoffe das war jetzt verständlich... um es mal bildlich zu machen findet ihr noch ein Bild im Anhang das, dass händische ersetzen in Excel zeigt. (Matrix_Before und Matrix_After)
Die Werte sollen dann mit dem letzten gültigen Wert in der Spalte ersetzt werden.
Welches ist "der letzte gültige Wert"?
Zitat:
Im Moment ersetze ich alle einfach mit NaN und das mit folgendem Code:
Wieso ersetzt Du sie mit NaNs?
Ich rate mal:
Code:
siz = size(X);
Result = X;
for k = 1:siz(2)
q = find(X(:, k) > 3.019, 1);
if ~isempty(q) if q ~= 1
Result(q:siz(1), k) = X(q-1, k);
else
Result(:, k) = NaN;
end end end
Jetzt werden ab dem ersten Wert, der größer ist als das Limit alle Werte auf das Element gesetzt, das als letztes kleiner oder gleich groß war. Wenn schon der erste Wert größer ist, wird die ganze Spalte auf NaN gesetzt.
Meinst Du etwas in der Art?
Alternativ:
Code:
siz = size(X);
Result = NaN(siz);
for k = 1:siz(2)
m = cumsum(cumprod((X(:, k) <= 3.019)));
if m(1)
Result(:, k) = X(m, k);
end end
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
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.