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

Werte eleminieren

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2013, 15:02     Titel: Werte eleminieren
  Antworten mit Zitat      
Hallo gomatlab,


ich habe ein array und möchte gezielte Werte eleminieren, in dem ich es mit Nan überschreibe, beispielsweise möchte ich alle nullen mit NaN ersetze.

Ich könnte es mit forschleife machen, jedoch hab ich gelesen dass ich es mit find funktion auch machen kann:

Code:
A = [ 25 0 -20 0 9 10 0 14]


Code:
weg = (A == 0)


Code:
weg = find(A== 0);
 


Könnt ihr mir helfen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 24.03.2013, 15:25     Titel:
  Antworten mit Zitat      
Hallo,

im Prinzip hast Du schon fast alles geschrieben, was du brauchst. Für die Null z.B.:
Code:

A(A==0) = NaN
 


Viele Grüße,
Nras
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2013, 15:42     Titel:
  Antworten mit Zitat      
was ist der unterschied zwischen beiden varianten?
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 24.03.2013, 15:55     Titel:
  Antworten mit Zitat      
Hallo,

das eine ist logische Indizierung. Du veränderst im Vektor A die Stellen, für die der Ausdruck A==0 true liefert. Das geht am schnellsten und du kannst den find() Befehl einsparen.

Du könntest aber auch nach Deiner Methode erst die Indizes mit dem find()-Befehl suchen und dann A an den stellen überschreiben.

Code:
A = [ 25 0 -20 0 9 10 0 14];
weg = find(A== 0);
A(weg) = NaN;


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 18:56     Titel:
  Antworten mit Zitat      
mit welcher plot-funktion kann ich es am feinsten darstellen..
da möchte ich es mir anhand der grafik anschauen,
´
ich kenne plot, bar, hist...
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.03.2013, 20:25     Titel:
  Antworten mit Zitat      
Hallo,

Das kommt daraus an, was genau "am feinsten" bedeutet. Bitte erkläre uns, was Du möchtest, da wir das nicht erraten können. Danke!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 22:25     Titel:
  Antworten mit Zitat      
siehe grafik im anhang. (kann auch ohne zahlen)..
wichtig ist halt die mit der find gefundenen werte, welche 0 matcht, in rot angezeigt wird.

Unbenannt.png
 Beschreibung:

Download
 Dateiname:  Unbenannt.png
 Dateigröße:  5.17 KB
 Heruntergeladen:  341 mal
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.03.2013, 00:20     Titel:
  Antworten mit Zitat      
Hallo,

Ich kann den Inhalt Deiner Mitteilung kaum verstehen. Das Bild scheint zwar einfach, aber ganz genau klar wird es nicht.
Bitte zeige uns noch, was Du bisher versucht hast und woran es noch hängt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 00:17     Titel:
  Antworten mit Zitat      
Ich simuliere ein Lichtsensor, der mir Werte liefert.

A = [ 25 0 -20 0 9 10 0 14];
weg = find(A== 0);
A(weg) = NaN;

Dabei möchte ich Werte die Nullen enthalten, mit NaN ersetzen.

Anschließend möchte ich, dass die Werte die >0 sind mit grün markiert werden und Werte die NaN sind, mit rot markiert sind.

Als Anwender möchte ich schauen, wie oft ich NaN Werte empfangen habe.

So kann ich durch scharfes Hinsehen ermitteln, wie oft ich NaN habe.
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 30.03.2013, 00:58     Titel:
  Antworten mit Zitat      
Hallo Gast,

was soll mit der -20 passieren? Die ist weder Nan (also soll nicht rot) und ist auch nicht > 0 (also soll nicht grün).

Ansonsten kann das hier in die richtige Richtung gehen. Du erstellst dir eine 2farbige colormap (grün und rot) selbst:

Falls die Werte < 0 nicht eingefärbt werden sollen, kannst Du noch eine dritte Farbe mit einbringen.

Code:

A = [ 25 0 -20 0 9 10 0 14];
% weg = find(A== 0);
% A(weg) = NaN;
mycolormap = [0,1,0;1,0,0]; % gruen, rot
figure
imagesc(A==0)
colormap(mycolormap)

% optional: Text mit Werten.
for k = 1:length(A)
    text(k,1.4,sprintf('%d',A(k)));
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 01:16     Titel:
  Antworten mit Zitat      
Hello,

das funktioniert einwandfrei sobald ich es in einer neuen datei ausprobiere, danke.
Jedoch wollte ich es in ein bestehendes programm eingebauen.
Dabei bekomme ich folgende probleme.

Zusätzlich nach deinem Code wird noch ein subplot aufgerufen. Deswegen wird deine Grafik nicht angezeigt. Ich gehe davon aus, dass es überschrieben wird.

Angemerkt sei noch, dass dein colormap auf meine seperate subplot Funktion auch angewendet wird.
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 30.03.2013, 01:37     Titel:
  Antworten mit Zitat      
Jaaa..... und nun? Ich weiß nicht wirklich, was du nun genau möchtest. Du musst etwas konkreter werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 21:37     Titel:
  Antworten mit Zitat      
hey:

ich möchte, dass das colormap nur an deinem Beispiel ausgeführt. Für nochfolgende plots soll es wieder normal in dunkelblau sein.
 
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.