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

Mehrere Matrizen gleich initalisieren

 

Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 17:33     Titel: Mehrere Matrizen gleich initalisieren
  Antworten mit Zitat      
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 Confused

Vielen Dank,
Danybel


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 17:52     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:00     Titel:
  Antworten mit Zitat      
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

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:05     Titel:
  Antworten mit Zitat      
Hallo,

was genau verstehst du unter initialisieren? Falls das "anlegen" bedeutet, können dir die Befehle
Code:
weiterhelfen. Diese legen Matrizen an und belegen sie mit dem entsprechenden Wert.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:14     Titel:
  Antworten mit Zitat      
Vielleicht meine ich auch deklarieren, sorry, ich verwechsele das immer Sad

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

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:14     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:20     Titel:
  Antworten mit Zitat      
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 Wink Ich möchte nämlich später noch mit den Werten weiterrechnen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:40     Titel:
  Antworten mit Zitat      
Ich weiß, wie ich das "Problem" lösen kann, wenn nur eine Ausgangsmatrix vorhanden ist, nämlich folgendermaßen.

Code:

Fahrzeugnummer=A(1,1);
 


Jetzt steht ja in B auch noch eine, jedoch andere, Fahrzeugnummer, folgendes ist ja nun nicht möglich:

Code:

Fahrzeugnummer=A(1,1)=B(1,1);
 


Ich hoffe, solangsam wird das Problem deutlich
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:48     Titel:
  Antworten mit Zitat      
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:
Code:
.

Wenn Du nur einen Wert kopieren willst, dann geht das so:
Code:
B(1,1) = A(1,1)
Dabei bleiben sämtliche anderen Werte in der Matrix B unberührt (ich glaube das ist, was Du willst - kann das sein?)
Private Nachricht senden Benutzer-Profile anzeigen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 18:57     Titel:
  Antworten mit Zitat      
Und ich dachte, dass das ganz schnell geht Wink

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).

Code:

A=[1,2,3];
B=[2,3,4];
C=[3,4,5];
 


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

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 19:43     Titel:
  Antworten mit Zitat      
Hallo,

das ganze kannst du - wie etwas weiter oben schon erwähnt - mit Indizes machen.
Code:
Fahrzeugnummer_row_col = [1 1]; % erste Zeile, erste Spalte
M = 3; % Zeilen
N = 3; % Spalten
% konvertiere [col row] nach Index
Fahrzeugnummer = sub2ind([M N],Fahrzeugnummer_row_col(1),Fahrzeugnummer_row_col(2));

A = zeros(M,N);
B = zeros(M,N);
C = zeros(M,N);

A(Fahrzeugnummer) = 5;
B(Fahrzeugnummer) = 12;
C(Fahrzeugnummer) = 2;

Analog dazu natürlich das ganze mit anderen Indizes (das Ganze geht auch etwas einfach - wollte nur mal "sub2ind" benutzen!

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 19:57     Titel:
  Antworten mit Zitat      
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
Code:

vektor_1(1,1) = x_wert_1;
vektor_1(1,2) = y_wert_1;
vektor_1(1,3) = y_wert_1;

vektor_2(1,1) = x_wert_2;
vektor_2(1,2) = y_wert_2;
vektor_2(1,3) = y_wert_2;
 


oder über die über mir genannte Indizierung mit sub2ind (danke für den Tipp @dib0r ;))
Private Nachricht senden Benutzer-Profile anzeigen
 
Danybel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 20:59     Titel:
  Antworten mit Zitat      
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 Smile
 
Strauße
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 07.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2009, 13:37     Titel:
  Antworten mit Zitat      
Ich schließe mich mal prinzipiell denjenigen an, die nicht genau wissen, was du meinst Wink

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:
Code:

Fahrzeugnummer = TEMP(1,1);
 


So und wenn du jetzt gerade meinetwegen mit Matrix B arbeiten willst dann sagst du halt
Code:

TEMP = B;
 


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! Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2009, 14:32     Titel:
  Antworten mit Zitat      
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
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 - 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.