Und in OPmtx sind meine ganzen "Pakete" mit den Ergebnissen meiner Berechnungen.
Und jede Zeile in diesen "Paketen" entspricht einer Messung mit ca. 50 Werten.
Was ich gerne machen will es aber nicht so klappt ist das in jeder Zeile
geprüft wird ob der Wert in Spalte 40 kleiner ist als in 42 wenn nicht dann soll die ganze Zeile gelöscht werden.
Ich glaube nicht das die Lösung so schwer ist aber ich bekomme es einfach nicht so richtig hin
% beispieldaten erzeugen for kk=1:23
OPmtx{kk}=randi(100,100,50); % 100 messungen mit 50 werten end for jj=1:numel(OPmtx)
OPmtx{jj}(OPmtx{jj}(:,40) >= OPmtx{jj}(:,42),:)=[];
end
man kann es auch ohne schleife lösen denke ich aber darüber kann man sich dann gedanken machen wenn diese schleife einen großteil der rechenzeit frisst _________________
Wenn ich deinen Code jetzt verwende passiert aus z.B. OPmtx{1}
wird aus 31x45 --> 1x1364 wird...
da mein code das nicht macht und deiner schon wäre es hilfreich wenn du den code postest der das verursacht irgendwie scheinst du es ja anders zu machen.
bitte poste ein lauffähiges beispiel das deinen fehler reproduziert.
_________________
Der Code macht eigentlich was er soll nur irgendwann bekomme ich den Fehler "Index exceeds matrix dimensions"
Ich weiß das sich i und j hier beißen was eigentlich auch dumm von mir ist das so zu schreiben. Trotzdem würde ich gerne wissen ob die Möglichkeit gibt das was ich geschrieben habe zu laufen zu bringen ?
Und noch eine Frage =)
Wenn das jetzt da durchgelaufen ist und ich die Daten bearbeitet habe,
wie speichere ich das ganze wieder in die selbe Mat-File ?
Also Ohne das ich wieder alles zuweisen muss.
Der Code macht eigentlich was er soll nur irgendwann bekomme ich den Fehler "Index exceeds matrix dimensions"
anscheinend also nicht
Zitat:
Ich weiß das sich i und j hier beißen was eigentlich auch dumm von mir ist das so zu schreiben.
was meinst du damit? i und j sind die imaginären einheiten und sollten deswegen nicht als laufvariablen verwendet werden
Zitat:
"Index exceeds matrix dimensions"
das heist das du versuchst auf elemente zuzugreifen die es nicht gibt. so etwas lässt sich sehr leicht mit dem debugger rausfinden. ich kann immer nur empfehlen den zu benutzen
ich würde nicht length nehmen. length gibt immer die größte dimension aus und das ist nicht immer die die man haben will. ich würde size mit dimmensionsangabe verwenden wie du es auch in deiner zweiten schleife gemacht hast. oder auch numel.
eigendlich richtig aber das problem ist das du innerhalb deiner schleife die größe der matrix änderst. das führt zu dem auftretendem fehler.
eine while schleife könnte hier helfen.
beim zweiten teil muss ich auch erst in der doc lesen. also guck dir einfach mal
Aber eine andere Frage zu dem ursprünglichen Problem.
Wenn ich die ganzen Zeilen nicht löschen will sondern alles mit Null oder NaN ersetzen will bis auf die erste Spalte wie würde man das dann schreiben ?
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.