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

aus trisurf befehl ein surf befehl

 

bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2012, 11:15     Titel: aus trisurf befehl ein surf befehl
  Antworten mit Zitat      
hallo, ich habe ein problem. ich möchte mein trisurf in ein surf befehl machen.

Messwerte:
x=(30X1) double
y=(30x1) double
z=(30x1) double, hier auch negative werte enthalten


Code:

tmp=figure
tri = delaunay(x,z);
trisurf(tri,x,z,y,data(:,1Cool);
%data greift auf eine matrix um farben darzustellen


Dieser Code funktioniert aber ich würde gerne ein Surf draus machen. kann mir jemand mal eine tip geben? ich versuche es aber es gibt eine fehlermeldung.


Harald
Forum-Meister

Forum-Meister


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

ich würde für den Zweck über TRISCATTEREDINTERP oder GRIDDATA gehen, siehe entsprechende Doku.

Bei Problemen bitte immer die Fehlermeldung reinkopieren und möglichst den Code, der diese produziert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 12:42     Titel: funktioniert aber...
  Antworten mit Zitat      
hallo harald, dein Code:

Code:

F=TriScatteredInterp(x,z,y)
[X,Z]=meshgrid(x,z)
Y=F(X,Z)
mesh(X,Z,Y)
 


funktioniert aber die fläche ist eben nur mesh, die soll geschlossen sein.
meine xyz punkte sind nicht symetisch, somit ergibt dein Code keine sauberen Flächenenden, man sieht ecken bzw kanten.

wenn ich folgendes ausführe:

Code:

F=TriScatteredInterp(x,z,y)
[X,Z]=meshgrid(x,z)
Y=F(X,Z)
surf(X,Z,Y)
 


bekomme ich eine fehlermeldung:
Error in ==> Untitled at 12
surf(X,Z,Y)


vlt hast du noch eine idee?

gruß

edit by denny: Bitte Codeumgebung benutzen. Danke!
 
Harald
Forum-Meister

Forum-Meister


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

überlicherweise enthält die Fehlermeldung weitere Informationen, was schiefgegangen ist. Bitte die komplette Fehlermeldung posten.

Wenn möglich, bitte einen (Teil-)Datensatz zur Verfügung stellen, mit dem man arbeiten kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 17:28     Titel:
  Antworten mit Zitat      
leider steht sonst keiner fehlermeldung.
darf leider meine messdaten nicht mitteilen Sad
wir könnten fixtive nehmen: x=8x1 y=8x1 z=8x1

x=[10.5
11.5
30.5
31.5
32.5
60.5
61.5
62.5]

y=[-10.5
-8.5
-10.5
-9
-8.3
-10.5
-9
-8.3]

z=[10.5
20.5
11.5
22.5
33.5
13.5
23.5
34.5]
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
leider steht sonst keiner fehlermeldung.

Das wäre das erste Mal in vielen Jahren, die ich MATLAB nutze.

Die von dir genannten Daten führen bei mir zu keiner Fehlermeldung. Ich bräuchte schon Daten, die die Fehlermeldung aufweisen.

Zudem: Welche MATLAB-Version verwendest du?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2012, 10:35     Titel:
  Antworten mit Zitat      
ich verwende die version 7.11.1 (R2010b).
okey komisch da ich bei meinen messwerten x=y=z=30x1 habe, geht das wohl nicht den.

das bsp mit 8x1 geht mit deinem code aber ab 11x1 funktioniert es nicht mehr.

x=[10.5
11.5
30.5
31.5
32.5
60.5
61.5
62.5
80.6
81.6
82.7
]

y=[
-10.5
-8.5
-10.5
-9
-8.3
-10.5
-9
-8.3
-9
-7
-8]

z=[
10.5
20.5
11.5
22.5
33.5
13.5
23.5
34.5
14.6
26.8
35]

die fehlermeldung lautet ziemlich genau:
"
??? Attempt to execute SCRIPT surf as a
function:
C:\Documents and
Settings\Benutzer\Desktop\Messung\surf.m
"
 
Harald
Forum-Meister

Forum-Meister


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

da ist ja die Fehlermeldung Smile

Dahinter steckt ein recht einfaches Problem:
du hast dein eigenes Skript unter dem Namen surf.m gespeichert. Damit überlagerst du den in MATLAB enthaltenen Befehl surf.

Lösung: Benenne deine Datei um, z.B. in oberflaeche.m

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2012, 11:30     Titel:
  Antworten mit Zitat      
stimmt das geht. naja der befehl ist nicht das wahre Smile die oberfläche welche die punkte darstellen sind an den enden eckig.
der befehl "trisurf" bildet es schöner ab und wenn ich den punkten farben zu ordne als druck, dann interpoliert der trisurf befehl doof Sad naja egal aber danke

meine letzte frage
code:

Code:

Name=input('Titel eingeben : ','s');
title(Name)
 


bis hier geht das. ich würde aber gerne noch einen fixen titel unter dem titel haben

edit by denny: bitte die Codeumgebung benutzen. Danke!
 
Harald
Forum-Meister

Forum-Meister


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

wenn dir das Resultat von TRISURF besser gefällt, kannst du das ja nehmen.
Code:
verbessert meiner Meinung nach so oder so oft die Darstellung.

Zur Frage des Titels - hilft das?

Code:
Name=input('Titel eingeben : ','s');
fester_Titel = 'Das bleibt so!';
vollerTitel = sprintf('%s \n %s', Name, fester_Titel);
title(vollerTitel)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2012, 12:25     Titel:
  Antworten mit Zitat      
danke, das mit dem titel funkt.^^

den befehl "shading interp" habe ich schon in meinem mfile.

ich glaube mein problem bzw lösung ist "interpn(nearest)".
meine druckverteilung ist falsch interpoliert, die ist dreieckig interpoliert, weiss nicht wie matlab interpoliert. ich ging davon aus das es mit dem trisurf was zutun hat. deswegen wollte ich weg von dem befehl. war wohl der falsche ansatz.
 
Harald
Forum-Meister

Forum-Meister


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

wie genau interpoliert wird, lässt sich in der Dokumentation der entsprechenden Befehle nachlesen.

Ich würde behaupten, dass die MATLAB-Befehle nicht "falsch" interpolieren, sondern eine Interpolationsmethode anwenden, die lediglich für deine Anwendung nicht geeignet ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2012, 17:55     Titel: bild behält nicht dir größe beim speichern
  Antworten mit Zitat      
noch eine frage, wenn du noch so nett sein soltest. bei meinem plot habe ich die richtige größe einstellen können, doch beim speichern, behält er nicht die größe
Code:

tmp=figure
tri = delaunay(x,z);
trisurf(tri,x,z,y,data(:,17));
shading interp
colormap(farben)
colorbar
%caxis([50 100])
axis off
grid off
set(tmp,'Position',[200 200 960 480])
view(0,0)
%hold on
fester_Titel = '1 Hz';
vollerTitel = sprintf('%s \n %s', Name, fester_Titel);
title(vollerTitel)  
saveas(tmp, '1.png')
close(gcf)
 
 
Harald
Forum-Meister

Forum-Meister


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

weiß ich leider spontan nicht. Probier mal Google. Wenn, dann dürftest du nicht der einzige sein, der das Problem hat.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bald weg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2012, 14:25     Titel:
  Antworten mit Zitat      
ich weiss warum meine interpolation so doof aussieht an einigen stellen.
Der Code :
tri = delaunay(x,z);
trisurf(tri,x,z,y,data(:,17));

nimmt natürlich alle werte und verbindet sie nach einem vorgebenen dreieck-muster. kann ich das muster beeinflussen in dem ich

aus meinen x=y=z=30x1 mehere 3x1 mache und die mit hold on mit plotte?

wie kann ich den ausgewählte werte aus meiner 30x1 raus lesen und in eine 3x1 rein tun?

b=[x(1,6, Cool]????
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.