|
challenger |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 30.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2014, 12:00
Titel: 3D Matrixzuweisung
|
|
Hallo zusammen
Ich habe zwei 3D Arrays mit gleicher Dimension. Das eine Array enthält Messwerte (M), die andere enthält fortlaufende Integerwerte (ID).
Jetzt geht es darum, alle Werte der Matrix M, welche mit einem spezifischen Integerwert der ID Matrix korrespondieren, in eine separate Matrix zu speichern (wiederum mit den gleichen Dimensionen wie die Ursprungsmatrix).
Da ich dies relativ oft tun muss, würde ich gerne fragen, was dafür eurer Meinung nach wohl die effizienteste Lösung ist. Man könnte es mit logical Arrays machen, habe aber damit Performancemässig schlechte Erfahrungen gemacht.
Um Hilfe wäre ich sehr dankbar!
Viele Grüsse
|
|
|
|
|
Nras |
Forum-Meister
|
|
Beiträge: 608
|
|
|
|
Anmeldedatum: 21.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.12.0.635 (R2011a)
|
|
|
|
|
|
Verfasst am: 07.07.2014, 12:09
Titel: Re: 3D Matrixzuweisung
|
|
|
|
|
Hallo,
mir ist nicht ganz klar, was das bedeutet:
challenger hat Folgendes geschrieben: |
Ich habe zwei 3D Arrays mit gleicher Dimension. Das eine Array enthält Messwerte (M), die andere enthält fortlaufende Integerwerte (ID). |
Vielleicht soetwas hier? Bitte sonst ein Beispiel geben.
Auch das verstehe ich nicht:
challenger hat Folgendes geschrieben: |
Jetzt geht es darum, alle Werte der Matrix M, welche mit einem spezifischen Integerwert der ID Matrix korrespondieren, in eine separate Matrix zu speichern (wiederum mit den gleichen Dimensionen wie die Ursprungsmatrix).
|
Wenn die ID fortlaufende Integerwerte enthält, kommt doch jeder Integerwert nur ein mal vor, richtig? Selbst wenn der öfter vorkommt, wie willst du eine Matrix derselben Dimension mit einer Teilmenger der Matrix M füllen? Das sind ja zu wenig Werte. Außerdem ist nicht klar, an welche Stelle die Werte dann in die Matrix geschrieben werden sollen... kannst du dafür ein Beispiel geben?
Ansonsten hilft dir vielleicht auch Funktion sub2ind(), mit der kannst du die 3D Indizes in einen linearen Index umwandeln, mit dem du eventuell leichter hantieren kannst.
Viele Grüße,
Nras.
|
|
|
challenger |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 30.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2014, 12:24
Titel:
|
|
|
|
|
Hab mich da wohl nicht klar ausgedrückt.
Ich geb mal etwas Hintergrund:
Es handelt sich um Fluiddynamische Messungen von Zweiphasenströmungen (hier: Luftblasen in Wasser). Was wir messen ist der Gasgehalt in einem dreidimensionalen Messfeld (d.h. wir haben Messwerte für den Gasgehalt in x,y und z Richtung). Wenn in einem bestimmten Punkt Wasser ist, ist der Gasgehalt logischerweise null, wenn Luft ist, 1. Da das Messfeld diskret ist gibt es auch noch Zwischenwerte zwischen 0 und 1 (für die Grenzfläche zwischen Blase und Wasser).
Das zweite Array enthält nun die Blasennummer (die ID der Blase). Wenn wir bspw. zwei Blasen haben, gibt es im Messarray zwei Zonen die die Gasgehalte haben und das ID Array zeigt in allen Elementen, wo sich die Entsprechende Blase befindet, deren ID numer (also 1 und 2 hier).
Im Prinzip möchte ich jetzt jede Blase einzeln extrahieren können. Das heisst, ich möchte die nur die erste Blase in einem separaten Array (dort, wo die ID Matrix den Wert 1 hat).
Es ist notwendig, diese in einem 3D Array zu behalten, da diese Werte in einem späteren Verlauf noch Kreuzkorreliert werden sollen.
In anderen Worten: ich suche nach all jenen Eementen in der Matrix M für die in der ID Matrix der Wert 1 (2,...i) gilt.
Danke vielmals für die Mühe und die Antwort. Ich hoffe, es ist jetzt verständlicher, ansonsten könnte ich noch zwei kleine Dummy Matrizen zur Verfügung stellen.
Viele Grüsse
|
|
|
Nras |
Forum-Meister
|
|
Beiträge: 608
|
|
|
|
Anmeldedatum: 21.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.12.0.635 (R2011a)
|
|
|
|
|
|
Verfasst am: 07.07.2014, 12:42
Titel:
|
|
Hallo,
den Hintergrund zu erfahren ist zwar eigentlich immer ganz interessant, verwirrt aber meist nur - Dummymatrizen mit dem was gegeben ist und dem, was hinterher herauskommen soll sind eigentlich immer gut. Das kann man direkt copy & pasten und kann sofort loslegen, ohne sich selbst Daten erstellen zu müssen die womöglich dann noch falsch formatiert sind oder ähnliches.
Wenn ich es nun richtig verstehe, dann wüsste ich nichts schnelleres, als logical indexing mit preallozierten Matrizen. Um die Schleife um die Blasen-ID kommt man wohl nicht drum rum.
Vorschlag:
Da passt das mit den Werten 0-1 und den Blasenindizes natürlich nicht zusammen, aber prinzipiell sollte das so funktionieren. Falls nicht, bitte noch mal melden.
Viele Grüße,
Nras.
|
|
|
challenger |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 30.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2014, 12:50
Titel:
|
|
Hey Nras
Danke, das funktioniert so hervorragend und auch einigermassen fix.
Danke auch für die Tips .
Alles Gute!
|
|
|
|
|
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 - 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.
|
|