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

Von 1D zu 3D

 

PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 14:54     Titel: Von 1D zu 3D
  Antworten mit Zitat      
Hallo Leute,

ich habe ein Vektor der geplottet eine Kurve ergibt (siehe Bild 1D).
Ich möchte, dass der selbse Vektor in 3D dargestellt wird, so ungefähr wie in der zweiten Abbildung (siehe meshc).

Wenn das geschafft ist, möchte ich es wie eine Animation durch laufen lassen.

Kann mir jemand helfen wie man das macht.

Edit: Doppelpostings bitte vermeiden.
mfg nschlange
Wink

1D.jpg
 Beschreibung:

Download
 Dateiname:  1D.jpg
 Dateigröße:  17.73 KB
 Heruntergeladen:  628 mal
meshc.JPG
 Beschreibung:

Download
 Dateiname:  meshc.JPG
 Dateigröße:  41.85 KB
 Heruntergeladen:  745 mal


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 15:21     Titel:
  Antworten mit Zitat      
Du könntest das in einer Dimension einfach kopieren, vielleicht reicht Dir das ja:
Code:

breite:1:50;
[X,Y]=meshgrid(x,breite);
Z=repmat(y,size(Y,1),1);
mesh(X,Y,Z)

Mit y Deinen y-Werten und x Deinen x-Werten
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 15:34     Titel:
  Antworten mit Zitat      
Danke für dein antwort.
ich habe etwas in matlab eingegebn es klappt nicht.
Code:
close all
clear all
clc

y=load('Platte1.txt');
l=length(y);
x=linspace(1,1,l)
breite=1:50;
[X,Y]=meshgrid(x,breite);
Z=repmat(y,size(Y,1),1);
mesh(X,Y,Z)


ist es so ok???
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 15:38     Titel:
  Antworten mit Zitat      
PAD hat Folgendes geschrieben:
Danke für dein antwort.
ich habe etwas in matlab eingegebn es klappt nicht.

ist es so ok???


Na, wenn es nicht klappt dann nicht.
Gibt es eine Fehlermeldung?

Hier noch ein Beispiel:
Code:
t=0:0.1:2*pi;
y=sin(t);
subplot(2,1,1);
plot(t,y);
[X,Y]=meshgrid(t,1:50);
Z=repmat(y,size(Y,1),1);
subplot(2,1,2);
mesh(X,Y,Z)

_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 15:50     Titel:
  Antworten mit Zitat      
Das beipiel ist gut, aber ich möchte meine Kraftkurve in 3D darstellen.

Die einzige fehler Meldung die erscheint, ist dass das "z" ein vektor und keine matix ist.

??? Error using ==> mesh at 73
Z must be a matrix, not a scalar or vector.

wie schaffe ich aus diesen Vektor ein Matrix zu erschaffen.
Ich glaube dann könnte man es in 3D darstellen.
Ich habe das Signal hoch geladen vielleicht schaffst du oder jemand anders es in 3D darzustellen.

Platte1.txt
 Beschreibung:

Download
 Dateiname:  Platte1.txt
 Dateigröße:  75.62 KB
 Heruntergeladen:  773 mal
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 16:06     Titel:
  Antworten mit Zitat      
Code:
clear all;
clc;
load Platte1.txt
subplot(2,1,1);
plot(Platte1)
[X,Y]=meshgrid(1:5:20,1:length(Platte1));
Z=repmat(Platte1,1,size(Y,2));
subplot(2,1,2);
mesh(X,Y,Z);

_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 17:49     Titel:
  Antworten mit Zitat      
Danke nschlange es klappt.
Jetzt möchte ich das es wie ein animation dargestellt wird.

Das folgende programm beschreibt was ich meine.
Code:
t=0:0.2:10;
x=-10:0.2:40;
y=x;
k=0;
[X,Y]=meshgrid(x,y);
for T=t
    xT=X-3*T;
    yT=Y-3*T;
    Z=1./sqrt(1+4*T.^2).*exp(-2*(xT.^2+yT.^2)/(1+4*T.^2));
    surf(X,Y,Z)
    shading interp
    xlim([-10 40]),ylim([-10 40])
    zlim([0 0.75])
    k=k+1;
    F(k)=getframe;
end


Ich würde gerne mein Kraftvektor auch so habe das er sich aufbaut.
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 18:17     Titel:
  Antworten mit Zitat      
Dann mach es doch so. Wink

Code:
clear all;
clc;
load Platte1.txt
[X,Y]=meshgrid(1:5:20,1:length(Platte1));
t=0:0.02:1;
k=0;
for T=t
    Z=T.*repmat(Platte1,1,size(Y,2));
    surf(X,Y,Z)
    shading interp
    %caxis([-1000 0])
    zlim([-1000 0])
    k=k+1;
    F(k)=getframe;
end


Sinnvoll wäre, repmat vor die Schleife zu holen.
Das überlasse ich Dir Cool
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 18:49     Titel:
  Antworten mit Zitat      
Danke es klappt.
Wie kann ich es umdrehen, es ist auf dem Kopf.
Ich habe es mit abs versucht, dann funktioniert das ganze nicht.
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 18:57     Titel:
  Antworten mit Zitat      
Es ist so wie Deine Daten sind...

Z mit -1 multiplizieren und zlim anpassen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 19:02     Titel:
  Antworten mit Zitat      
ok. Danke du hast mir sehr geholfen.
Wenn man das nicht umdrehen kann, könnte man vielleicht, die Kraft in einer eben darstelle wie z.B. pcolor. Sodass, wenn die Kraft immer größer wird die Farbe sich im diesem Bereich verdunkel bzw. verändert.
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 21.05.2008, 19:09     Titel:
  Antworten mit Zitat      
man kann es doch umdrehen, hab ich doch geschrieben:
Code:
Z=-T.*repmat(Platte1,1,size(Y,2));

Dann muss man noch zlim anpassen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 19:20     Titel:
  Antworten mit Zitat      
Super es klappt jetzt richtig herrum.
Ich habe noch eine letzte frage, kann vielleicht die 3D Anamation von links nach rechts laufen lassen. Statt von unten nach oben.

Weil die Daten die Bodenreaktionkraft beim gehn darstellen, steigt die kraft von links nach recht und geht wieder auf null, wenn der Fuß nicht mehr auf der Platte ist.

Könnte man die Animation von links nach rechts laufen lasse.
Wenn das klappt dann habe ich was ich brauch.
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.05.2008, 20:40     Titel:
  Antworten mit Zitat      
Kleine Idee: x- und y-Koordinaten im plot wechseln, also statt
Code:
Code:
schreiben!?


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
PAD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2008, 21:39     Titel:
  Antworten mit Zitat      
Danke Steve für deine Antwort.
Ich habe es ausprobiert, aber da ich es in 3D darstellen will, klappt es leider nicht so wie ich es haben will.

Mein programm sieht wie folgt aus, ist es möglich den Graphen von links nach rechts laufen zu lassen.
Code:

clear all;
clc;
load Platte1.txt
[X,Y]=meshgrid(1:5:20,1:length(Platte1));
t=0:0.02:1;
k=0;
for T=t
    Z=-T.*repmat(Platte1,1,size(Y,2));
    surf(Y,X,Z);
    shading interp
    %caxis([-1000 0])
    zlim([-200 1000])
    %ylim([])
    k=k+1;
    F(k)=getframe;
end
movie(F)
 
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.