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

Datenstruktur zur Speicherung von Matrizen

 

bligg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2010, 16:12     Titel: Datenstruktur zur Speicherung von Matrizen
  Antworten mit Zitat      
Hallo,

ich habe eine Reihe Matrizen (als Property einer Klasse, Objekte dieser Klasse werden in einem cell-Array gesammelt), und möchte jetzt diese Matrizen anhand weiterer Properties der Klasse sortieren.

Konkret: Ich habe in jedem Objekt eine Matrix und einen (Einheits-)Vektor, der eine Ausbreitungsrichtung beschreibt. Nun möchte ich mit bestimmter Winkelauflösung (= Anzahl von Bins) alle Matrizen, die in diesen Bin fallen, aufaddieren, und am Ende irgendwie "angenehm" auf dieses Ergebnis zugreifen können.

Die Matrizen sind alle 4x4, also ist der intuitive Weg, für die Winkel einfach zwei weitere Dimensionen hinzuzufügen:

Code:

      matrixStruc = zeros(4,4,floor(180/angRes)+1,floor(180/angRes)+1);

      for i=1:length(raySet)
   x = raySet.raySet{i}.rProp(1);
   y = raySet.raySet{i}.rProp(2);
   z = raySet.raySet{i}.rProp(3);

   theta = sind(z) + 90;
   phi = abs(atan2(y,x)*180/pi);

   indexTheta = floor(theta/angRes)+1;
   indexPhi = floor(phi/angRes)+1;

   matrixStruc(:,:,indexPhi,indexTheta) = matrixStruc(:,:,indexPhi,indexTheta) + raySet.raySet{i}.M;
      end
 


Damit habe ich in den ersten zwei Indizes die Indizierung der ursprünglichen matrix, und in den letzten beiden die Indizierung der "Bins".
Allerdings funktioniert mit dieser Struktur anschließend zum Beispiel ein einfacher Plot eines Elementes in Abhängigkeit eines Winkels nicht.

Code:

   plot(1:floor(180/angRes)+1,cat(1,matrixStruc(1,1,1,:)));
 


gibt:

Code:

??? Error using ==> plot
Data may not have more than 2 dimensions

Error in ==> processData at 20
        plot(1:floor(180/angRes)+1,cat(1,matrixStruc(1,1,1,:)));
 


Wenn man sich matrixStruc(1,1,1,Smile anguckt, werden alle Einträge jeweils als neue Zeile, immer anfangend mit

ans =

ausgegeben. cat(), egal entlang welcher Dimension, bleibt vollkommen ohne Wirkung.

Alternativ habe ich versucht, das irgendwie mit cell-Arrays hinzuwurschteln, allerdings gestaltet sich dann zum Beispiel die obige Abfrage noch schwieriger?!

Würde mich über Anregungen freuen.

Liebe Grüße
bligg


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.