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

Unique-Problem

 

Symbolic
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 08.06.2011, 23:15     Titel: Unique-Problem
  Antworten mit Zitat      
Hallo,
ich bin neu bei Matlab und habe ein Problem mit dem Befehl Unique.
Wenn A eine Zeilenvektor ist, dann gibt unique(A) die Einträge von A sortiert zurück und zwar jeden nur einmal richtig?
Bei mir funktioniert es irgendwie bei einer 1x12 Matrix, aber bei einer 1x49 Matrix mit nur 3 verschiedenen Einträgen, gibt unique die Matrix unverändert zurück. Was mache ich falsch?

Danke!
Gruß
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 08.06.2011, 23:33     Titel:
  Antworten mit Zitat      
Das ist seltsam, weil unique für Spalten- und Zeilenvektoren gleichermaßen funktioniert. Zeig uns mal dein Codeschnipsel.
Private Nachricht senden Benutzer-Profile anzeigen
 
Symbolic
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 09.06.2011, 08:46     Titel:
  Antworten mit Zitat      
Code:
% Ich habe eine Funktion f, welche ein Skalar y zurückgibt und diese rufe ich mehrmals in einer Schleife auf (a,k,n werden berechnet bzw. sind vorgegeben):

for j=0:2*n
p=a+j*k;  
N(1,j+1)=f(p,g,h);
end
disp(N); %zur Kontrolle wie N aussieht
b=unique(N);
 


Dann erhalte ich ja zuerst eine Matrix N, welche ich anschließend mit Unique ordnen wil.
b ist ja nun wieder eine Matrix, nur sind in ihr trotz Unique sehr viele doppelte Einträge, fast so viele wie in N.
Hier ein Beispiel:

0.1367 0.1367 0.1367 0.1367 0.1367 0.1367 0.1367 1.1132 1.1132


ans = 0.1367 0.1367 0.1367 0.1367 0.1367 1.1132

Obere ist N, untere b.
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 09.06.2011, 09:26     Titel:
  Antworten mit Zitat      
Hallo,

das sind keine doppelten Einträge, die Zahlen sind tatsächlich verschieden. Das wirst Du erkennen, wenn Du vor der Ausgabe mal mit

Code:


alle Nachkommastellen anzeigst. Die auf 4 Nachkommastellen gerundeten Zahlen mögen gleich erscheinen, die eigentlichen Zahlenwerte sind es jedoch nicht, sonst würde das der unique-Befehl mit Sicherheit erkennen.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
Symbolic
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 09.06.2011, 10:03     Titel:
  Antworten mit Zitat      
Ok, danke.
Kann ich irgendwie einstellen, dass unique nur bis zur dritten Nachkommastelle vergleicht und dann entsprechend die doppelten löscht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2011, 10:11     Titel:
  Antworten mit Zitat      
direkt einstellen nicht, aber es gibt natürlich Möglichkeiten, so z.b:

Code:

b=unique(round(N*1000)/1000);
 
 
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.