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

Hilfe mit mat2cell

 

reto
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2014, 16:44     Titel: Hilfe mit mat2cell
  Antworten mit Zitat      
Hallo, bin absoluter-Matlab Neuling und habe folgendes Problem:

ich möchte aus einer riesigen Matrix, in meinem Fall 29130x3 ein Cell-Array mit ausschließlich 3x3 Matrizen erstellen. Dazu habe ich es mit mat2cell versucht.

mit einer kleinen Matrix, beispielsweise einer 9x3 Matrix weiß ich, wie es funktioniert. z.B.

A=rand(9,3);
A=mat2cell(A, [3 3 3], 3);

Mein Problem ist nun der mittlere Teil der Klammer... Wie schaffe ich es dass es immer 3 zeilen und 3 spalten zusammenfügt?

Vielen Dank schonmal für die Hilfe
reto Smile
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.10.2014, 14:58     Titel:
  Antworten mit Zitat      
Hallo

so:

Code:

A= rand(29130, 3);
cellmatsize = [3 3];


nmbr_mats = size(A, 1) /cellmatsize(1)

A=mat2cell(A, ones(1, nmbr_mats)*cellmatsize(1) , cellmatsize(2));

 
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2014, 15:07     Titel: Danke
  Antworten mit Zitat      
Vielen Dank Denny!!!!!

Funktioniert einwandfrei =)

mfg reto
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2014, 17:05     Titel:
  Antworten mit Zitat      
Kann ich dieses cell array denn auch plotten?

jede 3x3 Matrix ist eine Fläche bestehend aus 3 Punkten mit jeweils einer x , y, und z koordinate. Alle 3x3 matrizen ergeben somit einen Körper den ich gerne darstellen möchte und teile davon auch farbrig markieren.

Gibt es da eine Möglichkeit?

mfg reto =)
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 24.10.2014, 18:29     Titel:
  Antworten mit Zitat      
Hallo

MAT2CELL ist fürs Plotten der falsche Weg,
Stehen denn Spalten in deiner Matrix A für X Y Z?

also ich würde mit SURF es lösen
so in etwa:

Code:

A= rand(29130, 3);
cellmatsize = [3 3];
nmbr_mats = size(A, 1) /cellmatsize(1)
X = reshape(A(:,1),cellmatsize(2), nmbr_mats )
Y = reshape(A(:,2),cellmatsize(2), nmbr_mats )
Z = reshape(A(:,3),cellmatsize(2), nmbr_mats )
C = zeros(size(A,1), 1);
C(1:cellmatsize(1):end)=1
C = cumsum(C);
C = reshape(C,cellmatsize(2), nmbr_mats )

figure();
surf(X, Y, Z, C)



 
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2014, 17:50     Titel:
  Antworten mit Zitat      
danke denny aber es haut leider noch nicht richtig hin.

ja die 3 Spalten stehen für die x, y, und z achse... und jede zeile der 3x3 matritzen ist ein punkt mit einem x einem y und einem z wert.. somit ergibt jede matrix ein Dreieck... alle Dreiecke zusammen ergeben einen Körper.

Mit deinem Code kann ich es zwar darstellen und man erkennt auch eine große Ähnlichkeit zum Körper aber es wird noch nicht richtig angezeigt...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.10.2014, 14:56     Titel:
  Antworten mit Zitat      
Hallo

kannst du deine Beispieldaten hier zur Verfügung stellen?
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2014, 15:52     Titel:
  Antworten mit Zitat      
ich wollte gerade die ursprüngliche stl ascii datei und die variable mit den ausgelesenen Knotenpunkten mit anhängen aber es kommt die Meldung dass die Endungen stl und mat verboten sind
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.10.2014, 17:24     Titel:
  Antworten mit Zitat      
Hallo

packe diese in einen Zip-Archiv
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2014, 17:30     Titel:
  Antworten mit Zitat      
anbei die ursprüngliche stl ascii datei (testkoerper.stl) und die variable mit den in matlab ausgelesenen Knotenpunkten (knoten)

gom.zip
 Beschreibung:

Download
 Dateiname:  gom.zip
 Dateigröße:  378.3 KB
 Heruntergeladen:  299 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.10.2014, 19:02     Titel:
  Antworten mit Zitat      
Hallo

versuch folgendes:

Code:


for k = 1:3:size(knoten,1)
   X = knoten(k :k + 3 - 1, 1);
   Y = knoten(k :k + 3 - 1, 2);
   Z = knoten(k :k + 3 - 1, 3);
   patch(X(1:3),Y(1:3),Z(1:3), 'red')
end
view(3)
 




EDIT: Diese Version ist schneller:

Code:

nmbr = size(knoten, 1);

faces = reshape(1:nmbr, 3, nmbr/3)';

figure();
 
patch('Faces', faces , 'Vertices', knoten, 'FaceColor', 'red')

view(3)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2014, 16:28     Titel:
  Antworten mit Zitat      
jawoll Dankeschön denny!

Funktioniert super =)

mfg reto
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 - 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.