Verfasst am: 04.11.2013, 12:17
Titel: Filtern von Werten
Hallo zusammen,
ich habe eine Matrix (m:n) mit diversen Werten welche ich aus einer Berechnung bekomme. Nun möchte ich, dass wenn in Spalte 1 / Zeile 1 ein Wert steht, er diesen mit dem Ihm Umgebenden vergleicht.
Es existiert eine Zahlenreihe:
1,4,4,2,5,6,10,1,3,1,-1,1.1.1,1.2,5
Nun möchte ich das aus der Zahlenreihe die 4,4,5 extrahiert wird sowie die 1,1.1,1.1,1.2,....
Leider klappt dies nicht so wie ich möchte. Mit der Funktion "find" den gleichen wert, kann ich die Abweichungen hinter dem Komma nicht mit berücksichtigen. Leider ergab die Forensuche auch nicht viel Sinnvolles.
Über Vorschläge wäre ich daher dankbar.
mir fehlt irgendwie der Grund bzw. die Bedingung aufgrund der die Zahlen extrahiert werden sollen.
Wieso wird 4,4,5 aber nicht die 6 oder die 10 extrahiert?
Wieso werden 1,1.1 und 1.2 extrahiert?
Das müsstest du genauer erklären. Meine Glaskugel funktioniert im Moment leider nicht
P.s.: Erstelle doch mal zwei Matrizen (in gültiger Matlab-Syntax!). Eine entsprechende Ausgangsmatrix und eine Ergebnissmatrix, so wie du es dir vorstellst.
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Richtig fragen!
Guten Morgen,
ich hoffe meine Erklärung ist verständlich und deine Glaskugel funktioniert bald wieder .
Also der Grund für das Sortieren der Werte ist, dass ich annähernd Gleiche Zahlenwerte (1, 1.1,1.2,0.9... ) bis zu einer Bestimmten Abweichung aus einer Matrix (A) in eine Matrix (B) kopieren möchte. Zwischendurch sind jedoch andere "Ausreißer" in der Matrix. Diese möchte ich auf diesem Weg eliminieren,allerdings als Leerzeilen mit in Matrix(B) übernehmen.
Anbei eine Matrix mit den ermittelten Werten.
Herzlichen Dank,
Guten Morgen,
herzlichen Dank für die schnelle Antwort.
Das die Funktion so einfach ist, dachte ich nicht.
Ich würde die rausgeworfenen Felder allerdings auch gern mit 0 Füllen, daher ist die Funktion vollkommen OK.
Ausserdem habe ich eine Matrix mit m Spalten.
Wie bekomme ich es hin, dass die Werte in Erg_Data auch Spaltenweise übernommen werden, derzeit werden die Werte hintereinander in eine Zeile geschrieben. Können diese auch Spaltenweise übernommen werden?
Ausserdem fällt mir auf, dass wenn in
die Funktion nicht weiter schaut und die 5 raus wirft, aber den "dritten Wert" nicht übernimmt.
Wie schaffe ich es das 3 Felder vorher und 3 Felder danach noch verglichen wird?
Hallo Zusammen,
also ich habe nochmals versucht das oben beschriebene Problem zu lösen.
Dies wollte ich nun wie folgt angehen:
Code:
max_abweichung = 0.005;%(StabData_erg / 2);
idx = (diff(Data)>=-max_abweichung)&(diff(Data)<=max_abweichung);
for j = 1 : (length(Data) - 5); %Beginner der ersten For schleife
for i = 1 : j; % innere for Schleife vergleich in 5-er Paketen
idx(find(idx==1)+{i})=1;
data_erg = zeros(1,length(Steigung));
data_erg(idx) = Data(idx);
end end
Ich möchte auch den 1 Wert mit dem 2,3,4 und 5. Wert vergleichen, bzw. der Zähler hochgezählt wird. Irgendwie funktioniert das leider nicht und ich bin seid heute morgen dabei den Fehler zu finden. Hat jemand eine Ahnung?
Hallo,
leider klappt es noch nicht so ganz.
Wenn ich nun zwei Spalten in einer Matrix habe, werden diese mit der o.g. Funktion in Data_Erg hintereinander geschrieben.
Wie ich die Messwerte Spaltenweise auch weiter in Data Erg. Übernehmen kann?
dein obiger Code ist bei mir nicht ausführbar. "+{i}" ist keine gültige Matlabsyntax (soweit ich weiß?). Die Variablen Steigung und Data sind auch nicht gegeben.
Man kann jetzt zwar Annahmen treffen (z.B. das Data aus einem vorherigen Post nutzen, Annehmen, dass Steigung gleich lang wie Data ist), aber sicher sein kann man sich nie. Also am besten immer ein komplettes lauffähiges Minimalbeispiel posten.
Deinen Spaltenvektor kannst du mit reshape wieder zu der Matrix entsprechender Form umformen.
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Richtig fragen!
sollte reichen.
Der Code ansich funktioniert auch wunderbar.
Was mir leider fehlt und ich persönlich noch nicht nachvollziehen kann, ist wie ich den Wert aus
Zeile 1 mit Zeile 5 vergleiche
Zeile 2 mit Zeile 5
Zeile 3 mit Zeile 5
Zeile 4 mit Zeile 5
. ...
Zeile (n) mit Zeile (n-1)
Ich wollte dies über eine For schleife lösen .. daher auch das i...
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.