|
B1ND3R |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 07.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2008, 18:21
Titel: Matrix durchlauf?
|
|
Nabend zusammen,
habe ein kleines problem, habe eine 511 x 676 große Matrix. Ich habe schon ein bisschen an der Matrix geändert, nur habe ich ein problem.
und diese dann öffne, hängt sich mein rechner total auf. Habe ich das ganze zu kompliziert gemacht? Oder gibt es gar einen einfachen schritt?
vielen dank
|
|
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 07.04.2008, 18:42
Titel:
|
|
Fehlen nicht die Indizes (i,j) in der ersten Zeile?
ansonsten lässt sich das ganze mit 2 Zeilen ersetzen
Des weiteren wäre ich sehr vorsichtig, wenn man Doubles gegenseitig vergleicht - wegen den Round-Off-Fehler. Schau diesbezüglich nach der Funktion EPS in der MATLAB Doku nach.
MfG
|
|
|
B1ND3R |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 07.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2008, 19:39
Titel:
|
|
ok - wegen den indizes schaue noch mal...
also den round off den du meinst, kann eigentlich nicht so wirklich sein, weil mein befehl davor war, runden auf die 3 stelle hinterm komma.
trotzdem schonmal danke
|
|
|
B1ND3R |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 07.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2008, 19:45
Titel:
|
|
ja cool - das geht, danke
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 07.04.2008, 22:19
Titel:
|
|
Schau dir mal den find Befehl an - damit kannst Du die ganze Matrix auf einmal durchsuchen, was dein Programm deutslich beschleunigen sollte ....
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
B1ND3R |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 07.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.04.2008, 11:41
Titel:
|
|
Michaela hat Folgendes geschrieben: |
Schau dir mal den find Befehl an - damit kannst Du die ganze Matrix auf einmal durchsuchen, was dein Programm deutslich beschleunigen sollte .... |
nur erfüllt, der find befehl nicht so wirklich das was ich benötige, aber vllt. bräuchte ich den später nochmal, danke für den hinweis
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 08.04.2008, 12:37
Titel:
|
|
Zitat: |
Schau dir mal den find Befehl an - damit kannst Du die ganze Matrix auf einmal durchsuchen, was dein Programm deutslich beschleunigen sollte .... |
Das wird es auf keinem Falle! Denn FIND durchsucht weder die Matrix, noch beschleunigt (eher umgekehrt) den Code.
FIND bestimmt lediglich die Indizes von Werten die ungleich 0 sind. Das hat mit der Suche nichts zu tun.
MfG
|
|
|
tompie |
Forum-Guru
|
|
Beiträge: 260
|
|
|
|
Anmeldedatum: 19.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: immer alles
|
|
|
|
|
|
Verfasst am: 08.04.2008, 16:12
Titel:
|
|
Hallo,
wieder mal etwas Grundsätzliches:
So sollte man das nicht machen. Die Ausgabegröße sollte nicht identisch mit der Eingangsgröße sein. In so einem einfachen Fall geht das natürlich schon, aber prinzipiell kann man damit extrem auf die Nase fallen, gerade in Schleifen. Denn in 'Daten' werden ja bei Deinem Ansatz laufend Werte geändert!
Also besser
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 08.04.2008, 19:17
Titel:
|
|
outsider hat Folgendes geschrieben: |
Zitat: |
Schau dir mal den find Befehl an - damit kannst Du die ganze Matrix auf einmal durchsuchen, was dein Programm deutslich beschleunigen sollte .... |
Das wird es auf keinem Falle! Denn FIND durchsucht weder die Matrix, noch beschleunigt (eher umgekehrt) den Code.
FIND bestimmt lediglich die Indizes von Werten die ungleich 0 sind. Das hat mit der Suche nichts zu tun.
MfG |
Ist jetzt nicht ganz klar weshalb -- im Endeffekt hätte ich find genauso wie im codebeispiel von tompie verwendet (nur eben mit find (a==b), wusste gar nicht, dass man das weglassen kann).
Kannst Du mir deinen Kommentar bitte näher erläutern?
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 08.04.2008, 22:52
Titel:
|
|
Dies ist ebenfalls ein weiterer Vektorizationstrick.
angenommen wir haben ein Vektor
>> a = [10 20 30 40 50]
Falls man den 3 und 5 Element benötigt, schreibt man logischerweise:
>> a([3 5])
Da MATLAB vektororientiert arbeitet kann man diese Elemente auch durch einen binären Vektor indizieren, was schneller funktioniert.
>> ind = logical([0 0 1 0 1])
>> a(ind)
und das funktioniert sowohl mit Vektoren, als auch mit 2D, 3D und ND-Array und und und...
FIND konvertiert die binäre Folge [0 0 1 0 1] zu [3 5] in dem die Stellen die ungleich 0 sind gegen Positionnummer ausgetauscht werden. In den meissten Situationen ist diese Vorgang völlig überflüssig und kostet nur Zeit.
Wenn man mit MATLAB arbeitet muss man immer mehrdimensional denken. Das ist die Grundlage der Vektorization mit MATLAB.
MfG
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|