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

Koeffizienten löschen

 

mathphys
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 19:30     Titel: Koeffizienten löschen
  Antworten mit Zitat      
Hallo

Gibt es einen Befehl in MATLAB bei dem Koeffizienten einer Matrix vergleichen werden?

Ich möchte in einer mxn Matrix alle Koeffizienten die nicht Gleich sind löschen.

Ich habe bis jetzt nur den befehl sort gefunden, der mir die Koeffizienten der größe nach sortiert, doch das ist nicht das was ich brauche, oder kann man auch damit hier etwas anfangen?

Grüße
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2011, 20:06     Titel:
  Antworten mit Zitat      
Hallo,

ich fürchte, die Frage musst du für mich präzisieren:
Mit was sollen die Matrixelemente verglichen werden?
Was soll herauskommen? Wenn in einer Matrix Elemente gelöscht werden, ginge ja die Matrixstruktur verloren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 20:12     Titel:
  Antworten mit Zitat      
Hi,

ich dachte mir das so, dass alle Einträge miteinander verglichen werden, ob sie gleich sind oder nicht. Also ob beispielsweise der Eintrag bei Zeile 20, Spalte 12 der selbe ist wie bei Zeile 9 und Spalte 8 und das eben für alle Koeffizienten und überall da wo sie nicht gleich sind, soll von mir aus nichts stehen.

Ich habe vorhin etwas über cell arrays gelesen. Vielleicht die Matrix in so etwas umwandeln, damit dann an entsprechenden Stellen nur [] im Array steht?

Ich habe halt das Problem, dass ich eine große Matrix habe, dessen Elemente Längen sind (was ich nur dank dir hinbekommen habe Smile ) und ich irgendwie herausfinden muss, wie ich nun zu den regelmäßigen Sechsecken komme.

Gruß
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2011, 21:43     Titel:
  Antworten mit Zitat      
Hallo,

ob solche paarweisen Vergleiche etwas bringen? Mal abgesehen davon, dass du bei 20 Vektoren meiner Zählung nach über 10^16 solche Vergleiche hättest.
Rein interessehalber: steckt da eine praktische Anwendung dahinter? Falls ja, lohnt es sich evtl., in dem Gebiet zu schauen, ob jemand mal was ähnliches gemacht hat, um einen passenden Algorithmus zu identifizieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 22:26     Titel:
  Antworten mit Zitat      
Hi,

auch ich sehe das ausufernd Sad

Ich versuche einen anderen Weg. Doch zumindest habe ich hier und heute schon viel über matlab gelernt. Hab Dank dafür Smile

Ja, das hier hat eine praktische Anwendung. Man will bei bestimmten Molekülen wissen welche energetischen Übergänge erlaubt sind, wenn man mit einem bestimmten Laser darauf feuert. Dazu sind quantenmechanische Berechnungen nötig, welche in einem ersten Schritt die Molekülgeometrie benötigen. Diese kennt man nicht und diese kann schnell sehr groß werden Sad

Jedoch weiß man aufgrund der Eigenschaften des Moleküls, dass es Isoalloxazin (Sieh das Bild im link an, dann verstehst du wovon ich in all den Threads rede) besitzt. Dies kann man nutzen um einen Orientierungspunkt zu besitzen. In meiner Arbeit suche ich diese Ringe und führe danach Rechnungen aus, um erlaubte Energie Zustände zu finden.

Ich habe recherchiert ob andere das Problem gelöst haben, doch nichts gefunden. Ich muss es selbst machen. Mit brute-force kann ich leben, doch auch das muss man erstmal programmiert bekommen, vor allem wenn man ganz neu ist in dieser Informatik Welt...

Gruß
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 10:26     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

ich fürchte, die Frage musst du für mich präzisieren:
Mit was sollen die Matrixelemente verglichen werden?
Was soll herauskommen? Wenn in einer Matrix Elemente gelöscht werden, ginge ja die Matrixstruktur verloren.


Bei nochmaligen darüber nachdenken:

Wenn ich alle Koeffizienten der Matrix löschen würde, welche nicht gleich sein. dann könnte man mit einer Abfrage eine Liste von möglichen Punkte gewinnen, welche für das Sechseck in Frage kämen.

Mna müsste also erst einen Test programmieren, welche der Koeffizienten alle gleich sind.

Doch wie würde so etwas gehen?

Gruß
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2011, 10:35     Titel:
  Antworten mit Zitat      
Hallo,

das ist immer noch dasselbe logische Problem.

Sagen wir, du hast 100 Mal Abstand 0 (weil von sich selbst), 100 Mal Abstand ca. 0.5 und 100 Mal Abstand ca. 1 und noch vieles mehr.
Wie definierst du da gleiche Koeffizienten? Vor allem hast du ja immer noch das Problem der Rundungsungenauigkeiten?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.07.2011, 10:42     Titel:
  Antworten mit Zitat      
Wie wäre es mit sortieren?

Code:
[row,col,values] = sort(Matrix)


Jetzt kannst du den Vektor values nach gleichen Einträgen der Reihe nach durchgehen. Über row und col bekommst du die Stelle des value in der Matrix raus.
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 11:35     Titel:
  Antworten mit Zitat      
@Harald
Ich hoffe, dass es neben der Null nur ein Paar von gleichen Werten gibt.

@DSP
Dein Code bringt den Fehler


Zitat:
??? Error using ==> sort
Too many output arguments.


Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.07.2011, 11:50     Titel:
  Antworten mit Zitat      
Sorry...das war Schwachsinn. Da ich habe ich find und sort durcheinander gebracht Embarassed Man kann mit Sort auch nur Zeilen oder Spalten sortieren...deshalb wird dir das hier leider auch nichts nützen.

Du könntest aber mit

Code:
index = find(Matrix==Matrix(n. Element)) % n= 1...max (=Zeilen * Spalten)


arbeiten und der Reihe nach deine Werte der Matrix durchgehen. Wenn in index mehr als 1 Wert steht, sind sie doppelt. Das n musst du in einer Schleife von 1 bis max laufen lassen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.07.2011, 12:13     Titel:
  Antworten mit Zitat      
Hallo mathphys,
wenn cih dein Problem richtig verstehe, dann könnte unique für dich interessant sein.
Code:

A = [1,2,3;4,5,6;2,4,6];
unique(A); % Gibt dir jeden vorkommenden Wert einmal zurück.
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 12:13     Titel:
  Antworten mit Zitat      
Hi

Danke für die Hilfe. Deinen Code werde ich gleich nach der Mittagspause zu verstehen versuchen. Bis dahin eine andere Frage:

Ich hätte auch eine Idee wie man das Problem angehen könnte. Ich weiss nur nicht genau wie das im Detail programmiert wird. Die Idee ist:

Vier for-Schleifen. Eine für die i-te Zeile und eine für die j-te Spalte lesen alle Koeffizienten aus und speichern diese so ab, dass dem Koeffizient später Zeilen und Spalte wieder zugeordnet werden kann. Bleiben noch zwei for Schleifen übrig, welche für die i-te Zeile und j-te Spalte alle Koeffizienten miteinander vergleichen sollen, außer sich selbst und die Null.

Wie würde so etwas umgesetzt werden können?

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
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.