Stromberg
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 08.12.2015, 22:20
Titel : Reduzierung von 3D-Daten
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?
Winkow
Moderator
Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
Verfasst am : 08.12.2015, 22:33
Titel :
ü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
Stromberg
Themenstarter
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 08.12.2015, 23:01
Titel :
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.
Winkow
Moderator
Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
Verfasst am : 08.12.2015, 23:18
Titel :
dann erstellst du erstmal ein logisches feld mittels oder
und benutzt das
grüße
_________________richtig Fragen
Stromberg
Themenstarter
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 09.12.2015, 00:02
Titel :
Danke für den Tipp.
Wenn ich
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.
Winkow
Moderator
Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
Verfasst am : 09.12.2015, 12:02
Titel :
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
Stromberg
Themenstarter
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 09.12.2015, 17:20
Titel :
Hallo,
anbei der aktuelle Stand:
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.
Beschreibung:
Download
Dateiname:
tryout_plot3D.mat
Dateigröße:
1.83 MB
Heruntergeladen:
471 mal
Winkow
Moderator
Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
Verfasst am : 09.12.2015, 17:55
Titel :
Stromberg
Themenstarter
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 09.12.2015, 19:23
Titel :
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?
Stromberg
Themenstarter
Forum-Fortgeschrittener
Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
Verfasst am : 09.12.2015, 21:09
Titel :
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!
Einstellungen und Berechtigungen
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
| 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.