|
|
Mehrere Matrizen gleich initalisieren |
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 17:33
Titel: Mehrere Matrizen gleich initalisieren
|
 |
Hallo,
ich habe eine Frage bezüglich Matlab und hoffe, dass ich hier richtig bin. Ich habe mehrere Matrizen, sagen wir A, B, C. Die haben jeweils die Dimension n x m. Es steht auch in jedem Feld der einen Matrix das selbe wie in dem entsprechenden Feld der anderen Matrizen. Z.B. steht in (1,1) immer eine Fahrzeugnummer. Ist es nun möglich, dies nur einmal zu initalisieren? Also z.B. (1,1)=Fahrzeugnummer?
Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt
Vielen Dank,
Danybel
|
|
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 17:52
Titel:
|
 |
Du kannst z.B. erst Deine erste Matrix fertiginitialisieren und danach einfach [code] B = A; C = A; D = A; [code]ausführen und Du hast ziemlich schnell vier identische Matrizen.
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:00
Titel:
|
 |
Danke für die schnelle Antwort. Ich glaube, ich habe noch was wichtiges vergessen zu sagen, bzw. ich hab mich falsch ausgedrückt. Die einzelnen Werte in den Feldern sind nicht gleich, nur das, wofür sie stehen. Soll heißen, dass die Fahrzeugnummer in der ersten Matrix z.B. 5, in der nächsten 10 usw. ist.
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:05
Titel:
|
 |
Hallo,
was genau verstehst du unter initialisieren? Falls das "anlegen" bedeutet, können dir die Befehle
weiterhelfen. Diese legen Matrizen an und belegen sie mit dem entsprechenden Wert.
MfG
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:14
Titel:
|
 |
Vielleicht meine ich auch deklarieren, sorry, ich verwechsele das immer
Also ich habe bereits 11 verschiedene Matrizen angelegt, wobei jedes Feld mit einem Wert ausgefüllt ist. In (1,1) wie schon gesagt steht immer die spezifische Fahrzeugnummer, in allen anderen Felder weitere Informationen, deren Größe in jeder Matrix unterschiedlich ist. Das wofür sie steht aber in jeder Matrix gleich ist. An (1,1) steht immer die Fahrzeugnummer, an (1,2) immer die Geschwindigkeit etc.. Was ich jetzt erreichen will ist, dass ich nun nur einmal "deklarieren"? muss, was in den einzelnen Feldern steht.
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:14
Titel:
|
 |
Also die Bedeutung der Zahlen ist Matlab ziemlich egal. Ob ein Wert jetzt eine Fahrzeugnummer, die Anzahl der Ratten in der Kanalisation von Paris oder die Sonnenstunden auf dem Brocken sind, kommt aufs gleiche raus.
Wenn Du nur 3 gleich große Matrizen willst, bist Du mit dib0rs Funktionen am besten bedient...
EDIT: Du willst eine Variable definieren, die Du als Index für den Zugriff benutzen kannst?
[code]
fahrzeug_index = 5;
anderer_index = 12;
a(fahrzeug_index) = 5;
a(anderer_index) = 12;
[code]
Das greift jetzt auf den eindimensionalen Index zu. Bei einer 5x5-Matrix erreicht man den ersten Wert in der sechsten Zeile mit dem Index 2, den zweiten Wert in der ersten Zeile mit dem Index 6. Wie es mit zweidimensionalem Index klappt, kann ich gerade wegen Zeitmangels nicht gucken - vielleicht später...
Zuletzt bearbeitet von Epfi am 19.01.2009, 18:24, insgesamt einmal bearbeitet
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:20
Titel:
|
 |
Epfi hat Folgendes geschrieben: |
Also die Bedeutung der Zahlen ist Matlab ziemlich egal. Ob ein Wert jetzt eine Fahrzeugnummer, die Anzahl der Ratten in der Kanalisation von Paris oder die Sonnenstunden auf dem Brocken sind, kommt aufs gleiche raus.
Wenn Du nur 3 gleich große Matrizen willst, bist Du mit dib0rs Funktionen am besten bedient... |
Mag sein, dass es Matab egal ist, mir aber nicht Ich möchte nämlich später noch mit den Werten weiterrechnen
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:40
Titel:
|
 |
Ich weiß, wie ich das "Problem" lösen kann, wenn nur eine Ausgangsmatrix vorhanden ist, nämlich folgendermaßen.
Jetzt steht ja in B auch noch eine, jedoch andere, Fahrzeugnummer, folgendes ist ja nun nicht möglich:
Ich hoffe, solangsam wird das Problem deutlich
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:48
Titel:
|
 |
Ich kann Dir glaubich echt nicht folgen.
Wenn Deine Matrizen nicht den selben Inhalt haben, dann kannst Du sie auch nicht mit den selben Werten befüllen. Die "Reihen-Gleichheitszeichen-Notation" aus C++ funktioniert in Matlab nicht. Wenn Du willst, dass in B das gleiche steht, wie in A, dann musst Du das in einer extra Zeile kund tun:
.
Wenn Du nur einen Wert kopieren willst, dann geht das so:
Dabei bleiben sämtliche anderen Werte in der Matrix B unberührt (ich glaube das ist, was Du willst - kann das sein?)
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 18:57
Titel:
|
 |
Und ich dachte, dass das ganz schnell geht
Nächster Versuch:
Es geht ja nicht darum, dass in jedem Feld der gleiche Wert steht, sondern darum, dass der Wert für die gleiche Variable steht. Vielleicht vereinfache ich mal das Problem. Ich habe beliebig viele Matrizen (A, B, C, ...). In jeder stehen 3 Koordinaten (x, y, z).
Nun steht ja jeweils an der ersten Stelle die x-Koordinate, an der zweiten die y-Koordinate und an der dritten Stelle die z-Koordinate. Auch wenn die einzelnen x-Koordinaten voneinander abweichen, sind es ja alles noch x-koordinaten. Und eben das möchte ich vorgeben; dass immer an der Stelle (1,1) die x-Koordinaten stehen usw.
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 19:43
Titel:
|
 |
Hallo,
das ganze kannst du - wie etwas weiter oben schon erwähnt - mit Indizes machen.
Analog dazu natürlich das ganze mit anderen Indizes (das Ganze geht auch etwas einfach - wollte nur mal "sub2ind" benutzen!
MfG
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 19:57
Titel:
|
 |
Danybel hat Folgendes geschrieben: |
Auch wenn die einzelnen x-Koordinaten voneinander abweichen, sind es ja alles noch x-koordinaten. |
Das ist Matlab aber egal, ob Du den ersten Wert nun x-koordinate nennst oder sonstwie. Wenn Du nachher mit den Daten rechnen willst ist es natürlich wichtig, dass die Matrizen zueinander passen. Aber wenn Du beim befüllen aufpasst, dass alles an der richtigen Stelle landet reicht das.
Das mit der richtigen Stelle kannst Du entweder über eine explizite Indizierung machen
oder über die über mir genannte Indizierung mit sub2ind (danke für den Tipp @dib0r ;))
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2009, 20:59
Titel:
|
 |
Vielen Dank für eure Tipps. Das mit den Indizes war mir schon klar, hatte ich ja selber weiter oben auch schon geschrieben. Mir ging es doch auch nur darum, ob ich alle Matrizen auf einmal mit den Indizes versehen kann, oder, ob ich das für jede Matrix einzeln machen muss. Ich werde jetzt versuchen, dies mit Hilfe eurer Tipps zu lösen. Vielen Dank
|
|
|
Strauße |

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 07.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.01.2009, 13:37
Titel:
|
 |
Ich schließe mich mal prinzipiell denjenigen an, die nicht genau wissen, was du meinst
Definier doch mal eine temporäre Matrix TEMP mit der gleichen Dimension wie die anderen Matrizen.
So und bei der kannst du dann EINMAL sagen:
So und wenn du jetzt gerade meinetwegen mit Matrix B arbeiten willst dann sagst du halt
Dann musst du glaub ich nochmal irgendwie "aktualisieren" mit "subs" oder so, wenn ich mich recht erinnere. Damit TEMP mit den Werten von B befüllt wird.
Vielleicht hilft das ja!
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.01.2009, 14:32
Titel:
|
 |
Hallo,
nein, das musst du für jede Matrix einzeln machen. Mehrfachzuweisungen unterstützt Matlab nicht.
Es gibt natürlich die Möglichkeit, anstelle von unterschiedlichen Variablennamen alles in ein Cell-Array oder in eine Struktur zu packen. Da gibt es dann Funktionen und Systeme, die das bewerkstelligen können.
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 - 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.
|
|