|
|
for-Schleife und find()... Matrix-Dimension |
|
mat007 |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 21:22
Titel: for-Schleife und find()... Matrix-Dimension
|
 |
Hallo,
ich habe ein Problem mit dem Befehl find und mit einer for-Schleife.
Wenn ich sie ausführe kommt immer
??? Index exceeds matrix dimensions. für die Zeile mit dem "find".
Bei A ist Spalte 1 =x und spalte 2=y.
Ich möchte jeden Wert aus der Matrix B mit der 1. Spalte von A vergleichen und den dazugehörigen y-Wert bekommen.
Kann mir jemand helfen? ich komm an der Stelle einfach nicht weiter... ' '
|
|
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 21:38
Titel:
|
 |
numel gibt dir die Anzahl aller Elemente wieder, die sich in der Matrix befinden. Wenn du also eine 2x6 Matrix hast, hast du 12 Werte drin. So zählst du in der Schleife bis 12, kommst du in der Indizierung über 6, du "exceedest" die Matrixdimension.
Gib in deine Matlab konsole einfach mal "doc size" ein
Zuletzt bearbeitet von Scriptor am 06.03.2011, 22:00, insgesamt einmal bearbeitet
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 21:57
Titel: Trotzdem Fehlermeldung...
|
 |
Vielen Dank für die schnelle Antwort Scriptor!
Aber selbst wenn ich 6 bei a eingebe kommt die Fehlermeldung...???
Hab schon soviel rumprobiert...
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 22:03
Titel:
|
 |
nimm dir doch mal den Debugger und schau dir im Workspace die Matrizen an, wie die sich verändern. Meist hilft das.
was heißen denn die Angaben size 1 2 oder 1 3? Irgendiwe verwirren die mich
Mfg
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 22:22
Titel:
|
 |
Ich dachte size könnte beim finden der Antwort helfen.
Ich werd das mal mit dem Debugger probieren.
Das find hat schon einmal bei einem anderen Problem funktioniert.
Aber auch wenn ich es bei diesem Problem jetzt ohne Schleife probiere sagt er mir dass ich die Matrix-Dimension überschreite.
Viele Grüße
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 22:30
Titel:
|
 |
Sorry ich kann dir nicht helfen, das sind zu wenig Infos zumal dein Code generell Verwirrung stiftet. In deinem Quellcode benutzt du zB ind und index, desweiteren wundere ich mch, warum du in der for schleife eine if Bedingung einführst, obwohl die Bedingung eh immer erfüllt ist... überdenke das Ganze am besten noch einmal
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 22:42
Titel:
|
 |
Ja, ok, das kommt von dem ganzen rumprobiere. Ich hatte die Schleife auch schon ohne if. Und das index ist eigentlich ind.
Vielen dank für die Anregungen.
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 22:57
Titel:
|
 |
Ich würde einfach mal überflüssigen Code wegkürzen:
erstal rudimentären Code beseitigen, was willst du eigentlich machen?
Due willst gerausfinden, an welchen Stellen in der ersten Spalte A, ein wert in der ersten Spalte B genauso groß ist. und dann im den entsprechenden wert aus der zweiten Spalte zu extrahieren und in E packen richtig? Wenns so laufen soll, dann teste mal...
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 23:40
Titel:
|
 |
Danke für den code.
Aber es wird mir immernoch angesagt, dass in der Zeile bei find die Matrixdimension überschritten wird.
Gibt es noch eine Idee
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.03.2011, 23:54
Titel:
|
 |
Ich kann mir nur noch ein Problem vorstellen und zwar in dern Zeile mit dem find, ersetze mal zu
also einfach nur ein Hochkomma....
Und du bist dir sicher dass B nicht leer ist und A hat über 3000 Zeilen?
Mfg
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2011, 00:15
Titel:
|
 |
Ja da bin ich mir sicher. Ich bin für jeden Lösungsvorschlag sehr dankbar.
Das mit dem Hochkomma funktioniert nicht.
Ich hab allerdings vorher in einer anderen Schleife auch schon ein find eingesetzt. Kann es auch daran liegen?
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2011, 00:42
Titel:
|
 |
Kollege wirf doch nicht so die brocken hin, was ist g und V schon wieder !!!Setze mal den Debugger vor die Zeile des gekürzten Quellcodes und schaue dir deine Matrizen A und B an und gib mal die Dimensionsgrößen durch Irgendwas haut da nicht hin...
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2011, 01:05
Titel:
|
 |
die Matrix V ist eine 21x2 double Matrix und g ist ein Wert einer Schleife.
und dann geht es weiter mit dem Rest, was oben schon steht.
Hab auch schon probiert B jetzt zu speichern und vor der nächsten schleife wieder zu laden.
|
|
|
mat007 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 06.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2011, 01:36
Titel:
|
 |
Juhuu ich hab das Rätsel geknackt... .
Es lag an dem find. Er hat es nach der ersten schleife als vektor mit 1x6 angesehen. Klar, dass dort nix mit einer Matrix von über 3000 Zeilen zu machen ist.
Hab einfach vor die nächste Schleife
geschrieben.
Vielen Herzlichen Dank Scriptor für die vielen Denkanstöße
Viele Grüße
|
|
|
|
|
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 - 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.
|
|