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

Filtern von Werten

 

retsam
Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 12:17     Titel: Filtern von Werten
  Antworten mit Zitat      
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.

Greetz
Ret
Private Nachricht senden Benutzer-Profile anzeigen


BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 04.11.2013, 13:00     Titel:
  Antworten mit Zitat      
Hallo restsam,

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 Very Happy Wink

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 Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 11:04     Titel:
  Antworten mit Zitat      
Guten Morgen,
ich hoffe meine Erklärung ist verständlich und deine Glaskugel funktioniert bald wieder . Very Happy
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,

greetz Ret
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 05.11.2013, 13:31     Titel:
  Antworten mit Zitat      
Hallo ret,

eventuell hat meine Glaskugel wieder funktioniert Laughing
wahrscheinlich geht es auch einfacher...

Code:
data = [1,4,4,2,5,6,10,1,3,1,-1,1.1,1.2,1.1,5];
max_abweichung = 1;
idx = (diff(data)>=-max_abweichung)&(diff(data)<=max_abweichung);
idx(find(idx==1)+1)=1;
data_erg = zeros(1,length(data));
data_erg(idx) = data(idx);


Ich hoffe das ist in etwa so wie du willst.
Was allerdings noch offen ist, wie die rausgeworfenen Werte dargestellt werden sollen. Als 0? als NaN?

Grüße
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2013, 11:31     Titel:
  Antworten mit Zitat      
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
Code:

data = [1,1.1.1,1,5,1,1,1.5,7,2,2.1,2,1,2.1,2.5]

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?

Greetz und nochmals vielen Dank.

PS. Pass auf die Glaskugel auf. Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2013, 14:58     Titel:
  Antworten mit Zitat      
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?

Greetz und Herzlichen Dank
ret
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2013, 12:28     Titel:
  Antworten mit Zitat      
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?

Greetz und vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 08.11.2013, 13:53     Titel:
  Antworten mit Zitat      
Hallo ret,

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 Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2013, 19:32     Titel:
  Antworten mit Zitat      
Hallo,
danke für die schnelle Rückmeldung.
Ja du liegst recht mit der Annahme, ein einzelnen
Code:
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...

Herzlichen Dank für die Unterstützung!

Greetz und ein schönes Wochenende
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 10:30     Titel:
  Antworten mit Zitat      
Guten Morgen,
nun die Rückmeldung:
Ich habe es wie folgt gelöst:

Code:
for i = 2 : (m-1);
   Abweichung = sM(i) - sM(i-1);
   if ( Abweichung >= -mA && Abweichung <= mA);
       Matrix2(i) = 1;
   else
       Abweichung = sM(i) - sM(i-1);
       if(sM(i) - sM(i+1) >= -mA) && (sM(i) - sM(i+1) <= mA);
          Matrix2(i) = 1;
       else
          Matrix2(i) = 0;
       end
   end
end


Greetz und vielen Dank
Ret
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 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.