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

Cell mit Messwerten in 3D anzeigen??

 

vroom
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 10:20     Titel: Cell mit Messwerten in 3D anzeigen??
  Antworten mit Zitat      
Hi,

ich hab eine Reihe von Messwerten in einem cell gespeichert und möchte diese nun in 3D anzeigen, kriege es aber nicht hin.

das Cell ist der Größe 1x101 (also 101 Messungen) und in jedem Eintrag ist eine Matrix der Größe ca. 2000x2 (die erste Größe variiert, da der Sensor nicht in jeder Messung Werte für alle Punkte auslesen kann).
Die erste Spalte der Matrix ist jeweils der Messpunkt und der zweite der entsprechende Messwert (Abstand).

Die Messungen sind im Abstand von 0,1 mm entstanden und der Sensor löst im Mikrometer-Bereich auf.

Wie schaff ich es, z.B. die Messpunkte auf die x-Achse, die zugehörigen Werte auf die z-Achse und die Nummer der Messung auf die y-Achse zu legen und anzuzeigen?

Wäre super, wenn mir jemand helfen könnte. Mit permute etc. hab ich schon rumgespielt, komm aber nicht voran.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich würde die Daten so organisieren, dass du drei Vektoren x, y, z hast. Dann z.B. mit griddata die Interpolation auf ein Gitter vornehmen (siehe Beispiel in Doku), um die Daten für surf und ähnliche vorzubereiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 11:27     Titel:
  Antworten mit Zitat      
Schonmal danke für die schnelle Antwort.

Wie krieg ich die denn so organisiert?

Momentan hab ich mir folgendes gebastelt:
Code:

neueMatrix = NaN(16000,101);
for j = 1:101
   
  [x,y]=size(hoehenprofil{j});
  for k=1:x
     for i = -8000:8000  
        if hoehenprofil{j}(k,1)==i
          neueMatrix((i+8001),j)= hoehenprofil{j}(k,2);
   
        end
     end
  end
end
 


das Ergebnis kann ich mir mit surf(neueMatrix) auch direkt anzeigen lassen, das Problem dabei ist, dass man bei meiner Datengröße im einstelligen Milliardenbereich an Schleifendurchgängen landet, was ewig dauert.

Das muss doch irgendwie einfacher gehen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2013, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Das muss doch irgendwie einfacher gehen...

Würde ich auch meinen; sollte mit max. einer for-Schleife zu erschlagen sein.

Mir ist allerdings die Datenstruktur nicht 100%ig klar. Kannst du (relativ kleine) Beispieldaten posten?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 13:13     Titel:
  Antworten mit Zitat      
Hi,

Also in cell{1,1}könnte z.B. sowas stehen:
-7492 721
-7491 715,444444444445
-7477 713,333333333333
-7476 705,714285714286
-7464 722,857142857143
-7463 718
-7451 732
-7450 729,500000000000
-7449 717
-7434 704,200000000000
-7433 701,500000000000
-7422 722,666666666667
-7421 713,400000000000
-7420 711,500000000000
-7408 726
-7407 718,250000000000

cell{1,2}:
-7494 742,333333333333
-7493 736
-7480 740,500000000000
-7479 736,875000000000
-7464 722
-7463 720,500000000000
-7451 734
-7450 728,428571428571
-7438 743
-7437 736,875000000000
-7436 731
-7424 748
-7423 735,555555555556
-7409 736,375000000000
-7408 731
-7395 734

cell{1,3}:
-7491 581
-7490 576,500000000000
-7489 567,750000000000
-7479 604,250000000000
-7478 596
-7465 599,666666666667
-7464 595,666666666667
-7463 582,666666666667
-7462 580
-7450 592,250000000000
-7449 586
-7437 600
-7436 590
-7435 588
-7423 601

Vielen Dank für die Mühe!
Grüße

Zuletzt bearbeitet von vroom am 11.06.2013, 13:16, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2013, 13:15     Titel:
  Antworten mit Zitat      
Hallo,

Daten fehlen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 13:18     Titel:
  Antworten mit Zitat      
Hi,

ja schon gesehen, .mat lässt sich wohl nicht anhängen. Deswegen oben ein paar Beispielwerte.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2013, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

muss man ggf. in ein .zip packen.

Vorschlag:
Code:
for I=1:numel(c)
    c{I}(:,3) = I;
end

data = cell2mat(c');


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 13:42     Titel:
  Antworten mit Zitat      
Super, das ist ja zigmal schneller.

was muss ich denn jetzt bei griddata für XI,YI (also die Parameter 4 und 5) angeben?

griddata( data(:,1) , data(:,3) , data(:,2) , XI , YI);

Bzw. es geht auch so aber ich krieg den Fehler, dass die Variable zu groß wird..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2013, 13:55     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
was muss ich denn jetzt bei griddata für XI,YI (also die Parameter 4 und 5) angeben?

An sich das, was in der Dokumentation dazu steht.

Gegenfrage: was gibst du ein?

Zudem: so wie es aussieht, hast du in einer Dimension 16000 Werte. Das sind deutlich mehr Pixel, als ein üblicher Monitor in eine Richtung hat. Insofern kann man vielleicht die Daten etwas ausdünnen ohne allzuviel an Information zu verlieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 14:08     Titel:
  Antworten mit Zitat      
Im Moment lass ich die beiden einfach frei..

Die Daten sind schon gesiebt, in ferner Zukunft sollen automatisch Höhenprofile gemessen werden können und nur bei Fehlern eine Rückmeldung an den User kommen, es weren also alle Daten gebraucht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2013, 15:13     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Im Moment lass ich die beiden einfach frei..

Das ist wenig sinnvoll. Das Verhalten dazu ist nicht dokumentiert, da kann also alles mögliche passieren.

Von dem, was ich bisher weiß, könnten XI und YI z.B. so aussehen:
Code:
xi = -8000:8000;
yi = 1:101;
[XI, YI] = meshgrid(xi,yi);


Zitat:
es weren also alle Daten gebraucht.

Wie gesagt: Monitore lösen nicht mehr als 2000 Punkte auf. Mehr kann man also gar nicht darstellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
vroom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2013, 15:56     Titel:
  Antworten mit Zitat      
Funktioniert so mit den XI, YI, vielen Dank!!!
Wird mir jetzt auch richtig angezeigt wenn ich die ganzen Sachen in griddata eintrage und dann mit mesh anzeigen lasse.

Man könnte natürlich für die Animation nur jeden 3-4 Wert nehmen, im Hintergrund aber mit allen rechnen. Das würde immerhin die Animation um einiges beschleunigen
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.