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

Konvertierung Vektor/ Matrix

 

Thomas als Gast
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 12:38     Titel: Konvertierung Vektor/ Matrix
  Antworten mit Zitat      
Hallo Forum,
als Anfänger stehe ich vor folgendem Problem:
- habe z.B. 1x990 Matrix/Vektor, die Zahlenwerte (positiv+negativ) entsprechen y-Koordinaten
- in Realität sind das 10 y-Werte von jeweils 11 Spalten und 9 Zeilen, dh. 9x11=99 Messpunkte mit jeweils 10 y-Werten
- es sind immer alle 10 y-Werte eines Punktes hintereinander (z.B. Punkt 1,1 der realen Matrix hat die Werte aus der 1x990 Matrix (1,1...10), Punkt 1,2 die Werte (1,11...20) usw.)
- ich möchte daraus nun 10 Einzelmatrizen machen (je y-Ebene eine Matrix mit 11 Spalten und 9 Zeilen)
- wie kann ich eine 1. Matrix erstellen (=1.y-Ebene), die dann als Zeile 1: (1,1);(1,11);(1,21);(1,31) bis (1,101) für Zeile 2Sad1,111);(1,121) bis (1,221) usw. enthält?
Bin da etwas zu frisch in der Materie.
Private Nachricht senden Benutzer-Profile anzeigen


Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.11.2008, 13:26     Titel:
  Antworten mit Zitat      
Code:

Matrix1 = reshape(Vektor(1:10:990),9,11);
Matrix2 = reshape(Vektor(2:10:990),9,11);
% ...
% usw.
 

... oder als 3D-Matrix:
Code:

for i = 1:10
  Matrix(:,:,i) = reshape(Vektor(i:10:990),9,11);
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 14:03     Titel:
  Antworten mit Zitat      
Hallo Helmert,
das funktioniert gut. Ginge die manuelle Erstellung der Matrizen auch automatisch?
Auch die 3D-Matrix lässt sich gut erstellen, klasse. Wie können aus der 3 D-Matrix die y-Werte grafisch ausgegeben werden. Mit der surf -Funktion ging das nicht so recht.
Vielen Dank, Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.11.2008, 14:29     Titel:
  Antworten mit Zitat      
Hallo Thomas,
das kommt natürlich immer auf die Art deiner Meßwerte an, wie man sie am geschicktesten darstellt. Du könntest sie mit surf alle hintereinander in eine Grafik plotten
Code:

figure;
hold on;
for i = 1:10
  surf(Matrix(:,:,i))
end
 

aber das sieht dann nicht unbedingt schön aus. Siehe auch "help view" zur Festlegung der Blickrichtung. Eine andere Möglichkeit wäre, alles punktweise zu plotten:
Code:

figure;
hold on;
for i = 1:10
  for j = 1:9
    plot3(j,1:11,Matrix(j,:,i),'.');
  end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 14:46     Titel:
  Antworten mit Zitat      
Hallo Helmert,
das waren die Hinweise für die Darstellung der 2D-Matrizen? Aber wie könnte ich erst einmal die 10 Matrizen automatisch erstellen?
Gruß Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.11.2008, 15:03     Titel:
  Antworten mit Zitat      
Wenn du alles in 2D-Matrizen einliest, wirst du jedesmal das Problem variierender Variablennamen (Matrix1, Matrix2, ...) haben. Das heißt, wenn du die Matrizen automatisch weiterverarbeitest, müßtest du auf verschiedene Namen zugreifen. Ich weiß nicht, ob das geht, aber wenn es geht, ist es eher umständlich.

Da ist die Variante, alle 2D-Matrizen in einer 3D-Matrix zu stapeln und später über den dritten Index anzusprechen, eigentlich in jeder Hinsicht sinnvoller.

Vielleicht gibt es auch noch andere Methoden, die ich nicht kenne?
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 15:32     Titel:
  Antworten mit Zitat      
Hallo Helmert,
ja das ist natürlich einfacher zu organisieren.
Wenn ich die Matrix "MATRIX" darstellen möchte, kommt die Fehlermeldung:

figure;
hold on;
for i = 1:10
for j = 1:9
plot3(j,1:11,Matrix(j,:,i),'.');
end
end
??? Error using ==> plot3
Vectors must be the same lengths.

Meine MATRIX hat die Form (9x11x10)?
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.11.2008, 15:37     Titel:
  Antworten mit Zitat      
Oh, j hat natürlich die Länge 1 und nicht 11. Also:
Code:

figure;
hold on;
for i = 1:10
  for j = 1:9
    plot3(j*ones(11,1),:,Matrix(j,:,i),'.');
  end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 15:54     Titel:
  Antworten mit Zitat      
Hallo Helmert,
da war auch eine Fehlermeldung:

>> figure;
hold on;
for i = 1:10
for j = 1:9
plot3(j*ones(11,1),:,Matrix(j,:,i),'.');
end
end
??? Undefined function or variable "plot3".
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.11.2008, 15:58     Titel:
  Antworten mit Zitat      
Diese Fehlermeldung kann eigentlich nicht sein, denn sie bedeutet, daß Matlab die Funktion nicht findet/kennt. Zuvor war dein Matlab aber der Meinung "??? Error using ==> plot3", was belegt, daß ihm die Funktion bekannt ist.

(?)
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 09.11.2008, 16:07     Titel:
  Antworten mit Zitat      
Vielleicht sinds die Variablen hinter der Klammer (Komma, Doppelpunkt o.ä.)?
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 10.11.2008, 13:03     Titel:
  Antworten mit Zitat      
Oh, da hatte ich wohl noch einen Fehler eingebaut: 1:11 statt : !
Code:

figure;
hold on;
for i = 1:10
  for j = 1:9
    plot3(j*ones(11,1),1:11,Matrix(j,:,i),'.');
  end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas als Gast
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.11.08
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 10.11.2008, 13:16     Titel:
  Antworten mit Zitat      
Klasse, jetzt gehts!

Kann man bestimmte Bereiche in einheitlicher Farbe darstellen? Also z.B. Wenn ich alle z-Werte von 1-20 in blau will, alle von 21-50 in grün und alle von 51-100 in rot?

Erst einmal vielen Dank!!
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.