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

Zugriff auf Elemente in 3D-Matrix / surface plot

 

Beardo22491
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2021, 11:11     Titel: Zugriff auf Elemente in 3D-Matrix / surface plot
  Antworten mit Zitat      
Hallo zusammen,
ich stehe vor folgendem Problem:

Ich habe eine quadratische Platte vermessen, indem ich auf der Oberfläche 15 x 15 Punkte verteilt habe. Dabei sollen die horizontalen 15 Punkte meine X-Werte repräsentieren und die vertikalen 15 Punkte meine Y-Werte. Messwert ist die Beschleunigung der Platte, was später meinen Z-Wert darstellt. Aus dem Messprogramm erhalte ich Pro Y-Wert eine Excel-Tabelle, die die jeweilige Beschleunigung an Position X (1-15) über der Frequenz der Anregung enthält. Ich habe also 15 Excel Tabellen (für Y 1-15) mit den dazugehörigen X und Z Werten bei verschiedenen Frequenzen.

Über den Code:

Code:

k=15;

for m =1:1:k
        T = readtable (sprintf('%u.xlsx',k));
        U = table2array(T);
        A(:,:,m) = U;
end
 


lese ich die Tabellen ein und erhalte dadurch eine Matrix A der Dimension 3, wobei quasi jede neue Excel Tabelle eine neue "Seite" der Matrix A ist. (so verstehe ich das zumindest)

Nun möchte ich, um später einen Surface-Plot der Plattenoberfläche erstellen zu können, Matlab mitteilen, dass bspw. der Beschleunigungswert an Position (3,1) an der Stelle (1,3,1) der Matrix A steht und der Beschleunigungswert an Position (8,10) an der Stelle (1,8,10). Die erste Dimension von A enthält die verschiedenen Frequenzen, vorerst wäre ich aber glücklich, wenn das ganze für eine Frequenz funktioniert.

Ich habe bereits herausgefunden, dass ich meshgrid benutzen muss, um später überhaupt einen Surface-Plot erstellen zu können.

Code:

r = 2:16;
s = 1:15;

for n = 1:r
    for m = 1:s
        x = A(1,r,1);
        y = A(1,1,s);
        [X,Y] = meshgrid(x,y);
    end
end

 


Das war mein Versuch, MATLAB zu sagen, dass es verschiedene x-Werte in den Spalten 2 - 16 gibt (in Spalte 1 steht die Frequenz) und es durch die 3. Dimension 15 verschiedene y-Werte gibt. Das funktioniert leider noch nicht so, wie ich mir das vorstelle. Ich erhalte für X und Y jeweils 15x15 Matrizen, wo jeweils nur die Werte der 15. Tabelle (y=15) stehen.
Mein Plan ist es, wie oben beschrieben, dass ich am Ende einen Surface-Plot erstellen kann, wo jeder Position x = 1 , ... , 15 und y = 1 , ... , 15 der richtige Beschleunigungswert (z) zugordenet ist, sodass ich mir die gesamte Bewegung der Platte anschauen kann.

Hat jemand eine Idee, wo mein Fehler liegt?

Beste Grüße
Rico
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.06.2021, 17:29     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich habe bereits herausgefunden, dass ich meshgrid benutzen muss, um später überhaupt einen Surface-Plot erstellen zu können.

In manchen Situationen kann man meshgrid dazu nutzen, man muss es aber nicht und in anderen Situationen kann es sinnfrei sein.

Im folgenden Code überschreibst du x,y,X,Y in jeder Iteration. Zudem sind die Iterationen nicht von den Schleifenvariablen m und n abhängig.

Wenn es dir darum geht, A(1,:,:) als Surface darzustellen, dann wäre mein Vorschlag
Code:

bzw. falls das eine Fehlermeldung wirft
Code:

An surf können der Klarheit halber auch noch x- und y-Werte übergeben werden.

Für weitere Unterstützung bitte ein Datenbeispiel anhängen, damit man das selbst nachvollziehen kann. Das ist zumindest für mich leichter als längliche Erklärungen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.