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

Reduzierung von 3D-Daten

 

Stromberg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2015, 22:20     Titel: Reduzierung von 3D-Daten
  Antworten mit Zitat      
Hallo Zusammen,

ich habe insgesamt 3 Matrizen gleicher Größe vorliegen: X, Y und Z.

Die X und Y Matrix enstprechen einem Gitter. Jedem Gitterpunkt ist ein Z-Wert zu geordnet.

Der Bereiche der X-Matrix und der Y-Matrix sind achsensymmetrisch.

X: -1500 bis 1500
Y: -1000 bis 1000

Nun würde ich gerne neue Grenzwerte vorgeben, z. B.:

X_lim: -1000 bis 1000
Y_lim: -500 bis 500

und die X-, Y- und Z- Matrizen anhand dieser Grenzwerte reduzieren.

Manuell bekommen ich das hin.

Hätte jemand eventuell ein Tipp für eine automatisierte Lösung?
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.12.2015, 22:33     Titel:
  Antworten mit Zitat      
über logische indizierung sollte das doch recht einfach gehen. x=x(x>5) so in der art das kannst du dann mit verküpfunten ja auf dein feld anwenden.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2015, 23:01     Titel:
  Antworten mit Zitat      
Hallo und Danke für die schnelle Rückmeldung.

Genau das bekommen ich nicht hin bzw. finde das nicht einfach.

Z. B. ist jede Zeile der X-Matrix gleich.

Demzufolge muss ich für die X-Matrix anhand den Grenzwerten die Spalten reduzieren.

Die Y-Matrix ist genau umgekehrt. Hier sind alle Spalten gleich und ich muss die Zeilen anhand den Grenzwerten reduzieren.

Nun sind aber durch die Reduzierung der Zeilen und Spalten die Matrizen X und Y unterschiedlich groß.

Demzufolge muss ich die Zeilen der X-Matrix und die Zelen der Y-Matrix wieder anpassen.

Nachdem ganzen Prozedere erfolgt abschließend eine symmetrische Reduzierung der Zeilen und Spalten der Z-Achse.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.12.2015, 23:18     Titel:
  Antworten mit Zitat      
dann erstellst du erstmal ein logisches feld mittels oder
Code:
(x<5 || x>-5) & (y<5 | y>5)

und benutzt das
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2015, 00:02     Titel:
  Antworten mit Zitat      
Danke für den Tipp.

Wenn ich

Code:

X_min = -1500;
X_max =  1500;

Y_min = -500;
Y_max =  500;


M_log =((X < X_min | X > X_max) & (Y < Y_min | Y > Y_max));
 


schreibe bekomme ich leider nur eine logische Matrix mit Nullen. Eigentlich erwarte ich eine Matrix welche symmetrisch im äußeren Bereich aus Nullen besteht und im inneren Bereich aus Einsen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.12.2015, 12:02     Titel:
  Antworten mit Zitat      
immer lauffähige beispiele posten. ich weis nicht was dein X ist aber spontan würde ich mal drauf tippen das du die vergleiche vertauscht hast.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2015, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

anbei der aktuelle Stand:

Code:

load ('tryout_plot3D','X','Y','Z');

X_lim = 3000;                           % symmetrischer Abstand in mm
Y_lim = 1500;                           % symmetrischer Abstand in mm

X_min = -X_lim/2;                       % Grenzwert min. X
X_max =  X_lim/2;                       % Grenzwert max. X

Y_min = -Y_lim/2;                       % Grenzwert min. Y
Y_max =  Y_lim/2;                       % Grenzwert max. Y

M_logX = (X > X_min & X < X_max);       % logische Matrix X
M_logY = (Y > Y_min & Y < Y_max);       % logische Matrix Y

M_log = M_logX .* M_logY;               % logische Gesamtmatrix 0,1

X_log = X.* M_log;                      
Y_log = Y.* M_log;
Z_log = Z.* M_log;

 


Jetzt habe ich die 3 Matrizen X_log, Y_log und Z_log deren äußeren Bereiche Null sind und welche ich jetzt entfernen möchte.

Bestimmt gibt es einen eleganteren Ansatz hierzu, als ich Ihn gewählt habe.

Der zu beschneidende Datensatz befindet sich im Anhang.

tryout_plot3D.mat
 Beschreibung:

Download
 Dateiname:  tryout_plot3D.mat
 Dateigröße:  1.83 MB
 Heruntergeladen:  471 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.12.2015, 17:55     Titel:
  Antworten mit Zitat      
Code:
X_new=X(M_logX & M_logY)

so?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2015, 19:23     Titel:
  Antworten mit Zitat      
Ok. Das Funktioniert.

Hättest du nich einen Tipp wie ich nun abschließend die Nullen am Rand der Matrix eleminierte bzw. die Matrix von der Größe her reduziere?
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2015, 21:09     Titel:
  Antworten mit Zitat      
Ich habe es hinbekommen. Mit Sicherheit gibt es elegantere Wege, aber es funktioniert

Code:

clc
clear
close all

load ('tryout_plot3D','X','Y','Z');

X_lim = 3000;                           % symmetrischer Abstand in mm
Y_lim = 1500;                           % symmetrischer Abstand in mm

X_min = -X_lim/2;                       % Grenzwert min. X
X_max =  X_lim/2;                       % Grenzwert max. X

Y_min = -Y_lim/2;                       % Grenzwert min. Y
Y_max =  Y_lim/2;                       % Grenzwert max. Y

M_logX = (X >= X_min & X <= X_max);     % logische Matrix X
M_logY = (Y >= Y_min & Y <= Y_max);     % logische Matrix Y

M_log = M_logX .* M_logY;               % logische Gesamtmatrix 0,1

X_log = X.* M_log;                      % Logische Matrix zur visuellen Überprüfung
Y_log = Y.* M_log;                      % Logische Matrix zur visuellen Überprüfung
Z_log = Z.* M_log;                      % Logische Matrix zur visuellen Überprüfung

log_row = any(M_log,1);                 % logische Zeile von M_log
log_column = any(M_log,2);              % logische Spalte von M_log


X_new = X_log;
X_new(:,~log_row) = [];
X_new(~log_column,:) = [];              % Reduzierte X-Matrix

Y_new = Y_log;
Y_new(:,~log_row) = [];
Y_new(~log_column,:) = [];              % Reduzierte Y-Matrix

Z_new = Z_log;
Z_new(:,~log_row) = [];
Z_new(~log_column,:) = [];              % Reduzierte Z-Matrix

 


Danke für die Unterstützung!
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.