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

Höhenprofil aus Vertikal- und Horizontalschnitten

 

rumus001
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 04.04.2014, 10:10     Titel: Höhenprofil aus Vertikal- und Horizontalschnitten
  Antworten mit Zitat      
Hallo allerseits,

folgende Problemstellung:
Ich habe eine Draufsicht einer Landschaft deren Höhenlinien farblich dargestellt sind (höhster punkt rot, niedrigster punkt blau usw.)

Wenn man dieses Höhenprofil mittig horizontal und vertikal in aufschneiden würde kann man jedes dieser Schnitte folgender maßen beschreiben:

Horizontaler Schnitt:

h = [-31:1:32] % 64 Punkte in der Horizontalen, Schrittweite 1
f(h) = 0.6*exp(-h.^2/8) + 0.5*exp(-h.^2/128);

Vertikaler Schnitt:
v = [-15:1:16] % 32 Punkte in der Vertikalen, Schrittweite 1
f(v) = exp(-v.^2/7);

Und jetzt die entscheidende Frage:
Wie bekomme ich es denn hin, eine Matrix zu erstellen die
quasi die Draufsicht dieses dreidimensionalen Profils darstellt.
Jedes Element der Matrix soll eine Höheninformation erhalten von 0 bis beispielsweise 1.

Im Anhang habe ich zwei PNG-Dateien hinzugefügt wie die Schnitte
(Horizontal und Vertikal) ungefähr aussehen.


Anmerkung:
Ich weiss dass es solche Befehle plot3, mesh und surf exestieren,
diese benötigen/ermöglichen aber nur eine quadratische Verteilung,
ich dagegen habe eine Rechteckverteilung mit unterschiedlicher Länge/Breite.

Ich würde mich über paar Tipps oder Ideen von Profis freuen,
meine Wenigkeit hat ein eher Grundlagenwissen in Matlab deshalb
habe ich dieses Forum aufgesucht und erhoffe mir ein positives Ergebnis.

Gruß
Rumus

Vertikalschnitt.PNG
 Beschreibung:
Vertikalschnitt des Profils

Download
 Dateiname:  Vertikalschnitt.PNG
 Dateigröße:  106.46 KB
 Heruntergeladen:  552 mal
Horizontalschnitt.PNG
 Beschreibung:
Horizontalschnitt des Profils

Download
 Dateiname:  Horizontalschnitt.PNG
 Dateigröße:  63.03 KB
 Heruntergeladen:  512 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.04.2014, 11:10     Titel:
  Antworten mit Zitat      
halli hallo:
Zitat:
Code:
h = [-31:1:32]
die 1 kannst du auch weglassen.
Zitat:
Code:
f(h) = 0.6*exp(-h.^2/8) + 0.5*exp(-h.^2/128);

ist keine gültige matlab syntax.
Zitat:
Ich weiss dass es solche Befehle plot3, mesh und surf exestieren,
diese benötigen/ermöglichen aber nur eine quadratische Verteilung,

was meinst du damit? was für eine quadratische verteilung?

deine beiden funktionen haben im punkt 0 nicht die selben werte. das finde ich verwundernd wenn es schnitte mittig durch den selben körper sind.
des weiteren bin ich mir nicht sicher wie du beide funktionen miteinander verrechnen willst. die eine funktion beschreibt ja quasi nur die höhe. der anderen funktion in der mitte. hat aber keine weiteren angaben über ihren verlauf. eine infacher weg währe sicherlich einfach die eine funktion mit der anderen zu multiplizieren da sie eh nur die höhe 1 hat ^^Smile
so in der art:
Code:
h = [-31:32]
f = @(h) 0.6*exp(-h.^2/8) + 0.5*exp(-h.^2/128);
v=[-15:16];
f2 = @(v) exp(-v.^2/7);
f3=@(v,h) f(h).*f2(v);
[H,V]=meshgrid(h,v);
Z=f3(H,V);
surf(H,V,Z);

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
rumus001
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 04.04.2014, 12:17     Titel:
  Antworten mit Zitat      
Wau so schnell geantowertet und genau das was ich haben wollte!
PERFEKT!

Genau so wollte ich es haben. Besten Dank!
Da sieht man dass ein Profi dran gewesen ist!

Mit quadratisch meinte ich eher sammetrische verteilung der x- und y-Werte.
Ich könnte mich auch geirrt haben, so habe ich es zumindest aus einem
meiner Grundlagenbücher interpretiert.

Ja es stimmt, tatsächlich haben die Funktionen nicht die gleichen Höhen im Nullpunkt. (Wie blöd von mir)


Meine Idee ist halt gewesen die Draufsicht zu generieren aus beiden seitlichen Ansichten. Und diese Ansichten werden bei diesem speziellen Profil mit den Gauss-Funktionen (Normalverteilung) beschrieben!

Vielen Dank nochmals, es hat mich in wenigen Minuten viel weiter
gebracht als ich es in drei Tagen selber geschafft hatte.
Private Nachricht senden Benutzer-Profile anzeigen
 
rumus001
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 07.04.2014, 10:48     Titel:
  Antworten mit Zitat      
eine Zusatzfrage noch zu obigem bereits gelöstem Problem:

Die Funktion f2 = @(v) möchte ich erweitern und zwar so, dass sie sich unterschiedlich verhält abhängig von den Werten im
Intervall v=[-15:16];

f2 = @(v) = exp(-v.^2/7); % für v < 0
f2 = @(v) = exp(-v.^2/29); % für v > 0

Wie kann man sowas denn machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.04.2014, 12:08     Titel:
  Antworten mit Zitat      
hmm entweder du schreibst dir eine funktion in ein extra function script mit if abfrage oder du machst so etwas:
Code:
f2 = @(v)  (v<0)*exp(-v.^2/7)+(v>=0)*exp(-v.^2/29);

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
rumus001
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 07.04.2014, 12:41     Titel:
  Antworten mit Zitat      
Hat geklappt, prima!

Code:

clear all; close all; clc;
 
% ----------------------------------------------------------------    
    h = [-47:48];
    v = [-15:16];
   
f = @(h) 0.6*exp(-h.^2/8) + 0.5*exp(-h.^2/128);
f2 = @(v) (v>0).*exp(-v.^2/4) + (v<=0).*exp(-v.^2/9);
% f2 = @(v) exp(-v.^2/7) + exp(-v.^2/27);
 
    f3 = @(v,h) f2(v).*f(h);  
    [H,V] = meshgrid(h,v);
 
        Z = f3(V,H);
        surf(V,H,Z);
% ----------------------------------------------------------------  
 


Es haben nur die Pünktchen jeweils hinter den Bedingungen-Klammern gefehlt hier: (v>0).*blabla und hier: (v<=0).* blabla
und ergab entsprechend ne Fehlermeldung.


Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.04.2014, 12:47     Titel:
  Antworten mit Zitat      
kleine anmerkung noch. bitte benutze zukümpftig die code umgebeung. macht das ganze leserlicher. (das ist nicht optional Smile )
und des weiteren solltes du nicht
Code:
am anfang benutzen. warum wurde hier im forum schon oft besprochen. das macht das debuggen unmöglich und alles was das debuggen erschwert hat im code nix verloren Smile es ist auch nicht nötig wenn sauber programmiert wird Smile
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
rumus001
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 07.04.2014, 13:18     Titel:
  Antworten mit Zitat      
Vielen Dank für den Hinweis! Smile
Mache ich ab sofort so wie erwünscht!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
rumus001
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 04.04.14
Wohnort: NRW
Version: R2013a 32Bit
     Beitrag Verfasst am: 13.06.2014, 08:44     Titel:
  Antworten mit Zitat      
Hallo,

ich will es nochmal wissen...

also in dem folgenden Code
Code:

    h = [-47:48];
    v = [-15:16];
   
f = @(h) 0.6*exp(-h.^2/8) + 0.5*exp(-h.^2/128);
f2 = @(v) (v>0).*exp(-v.^2/4) + (v<=0).*exp(-v.^2/9);
% f2 = @(v) exp(-v.^2/7) + exp(-v.^2/27);
 
    f3 = @(v,h) f2(v).*f(h);  
    [H,V] = meshgrid(h,v);
 
        Z = f3(V,H);
        surf(V,H,Z);

 

verstehe ich nicht ganz was diese Zeile macht:

Code:

        Z = f3(V,H);
 


Als ich diese Frage im April 2014 hier stellte, stand für mich im Vordergrund eine schnelle Lösung für das vorher erwähnte Problem zu finden.

Nun ist dieses Stückchen Quellcode ein Teil eines umfangreichen Programms zu dem ich eine ausführliche Dokumentation schreiben möchte/muss.


Verstehe ich es richtig wenn ich sage, dass die oben beschriebene Funktion
f3(v,h), die Funktionswerte anstatt aus den Vektoren "v" und "h", aus den Matritzen "V" und "H" berechnet?
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.