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

bestimmte Werte eine Matrix ersetzen

 

waba
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 14.02.14
Wohnort: Dresden
Version: R2014a
     Beitrag Verfasst am: 19.03.2014, 18:11     Titel: bestimmte Werte eine Matrix ersetzen
  Antworten mit Zitat      
Hallo,

ich habe eine Matrix qz_ausw (800x1500double).
Durch eine Abfrage in meiner GUI über zwei edit-Fenster bekomme ich ein Minima (editmin) und ein Maxima (editmax).
Alle Werte von qz_ausw, welche größer als mein Maxima bzw. kleiner als mein Minima sind, sollen nun durch den Durchschnittswert (d) der kompletten Anfangsmatrix ersetzt werden. Auf diese Weise möchte ich gewisse Messfehler eliminieren. (Mein Laserscanner hat im großen und ganzen gut gemessen, nur an manchen Stellen ist in z-Richtung ein Ausreißer, welcher falsch ist und deshalb einfach durch den Durchschnittswert ersetzt werden soll.)
Bis jetzt habe ich folgende Ansätze im Kopf kann sie aber noch nicht richtig verknüpfen:

Code:

editmax=get(handles.edit17, 'String');
editmin=get(handles.edit18, 'String');
d = mean(mean(qz_ausw));

... % Verknüpfung fehlt mir

minz = min(qz_ausw(:)); % qz_ausw muss an diesen Stellen durch eine neue qz Matrix erszetzt werden
assignin('base','minz',minz);

maxz = max(qz_ausw(:)); % qz_ausw muss an diesen Stellen durch eine neue qz Matrix erszetzt werden
assignin('base','maxz',maxz);
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.03.2014, 21:59     Titel:
  Antworten mit Zitat      
Hallo,
wenn ich dich nicht komplett falsch verstehe, solltest du einfach per suche nach
qz_ausw < editmin bzw. qz_ausw > editmax die gewünschten Punkte in deiner MAtrix finden, die ersetzt werden müssen.

Code:

editmax=get(handles.edit17, 'String');
editmin=get(handles.edit18, 'String');
d = mean(mean(qz_ausw));

minPkte = (qz_ausw < editmin);
maxPkte = (qz_ausw > editmax);
qz_ausw(minPkte) =  d;
qz_ausw(maxPkte) =  d;
 

So in etwa - kann es aber in Ermangelung von Matlab grad nicht testen.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
waba
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 14.02.14
Wohnort: Dresden
Version: R2014a
     Beitrag Verfasst am: 20.03.2014, 10:43     Titel:
  Antworten mit Zitat      
Hallo Martina,

an
Code:
minPkte = (qz_ausw < editmin);
maxPkte = (qz_ausw > editmax);
hab ich auch schon gedacht, allerdings ist ja qz_ausw eine Matrix und editmax ein einzelner Wert... Ich muss quasi jeden einzelnen Wert meiner Matrix mit diesem Wert vergleichen.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 20.03.2014, 12:35     Titel:
  Antworten mit Zitat      
waba hat Folgendes geschrieben:
Hallo Martina,

an
Code:
minPkte = (qz_ausw < editmin);
maxPkte = (qz_ausw > editmax);
hab ich auch schon gedacht, allerdings ist ja qz_ausw eine Matrix und editmax ein einzelner Wert... Ich muss quasi jeden einzelnen Wert meiner Matrix mit diesem Wert vergleichen.

Viele Grüße


Hast du es mal auspobiert?
Bei der Abfrage (qz_ausw < editmin) bzw (qz_ausw > editmax) wird deine Gesamte Matrix überprüft. Du erhältst eine true/false Matrix. Überall, wo eine 1 steht, wurde der Minimalwert unterschritte, oder der Maximalwert überschritten.
Nur an den Stellen, an denen die Matrix dann 1 ist, werden die Werte in der qz_ausw-Matrix dann auf den vorher berechneten Mittelwert gesetzt.

(Man kan den Code sogar noch um 2 Zeilen kürzen, indem man die Bedingung verodert - aber das macht den Code für dich sicherlich nicht leichter lesbar.)
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
waba
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 14.02.14
Wohnort: Dresden
Version: R2014a
     Beitrag Verfasst am: 20.03.2014, 12:54     Titel:
  Antworten mit Zitat      
Hallo,

danke für die schnelle Antwort! ich hab es probiert und mit
Code:
qz_ausw(qz_ausw < editmin)=d;
funktioniert es jetzt! Very Happy

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