www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Ausgabe der max./min. Werte
Ausgabe der max./min. Werte < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:41 Mi 08.11.2006
Autor: CAS

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Muss für meinen 3d-Plot eine Legende erstellen, wo der maximalste/ minimalste Punkt als Wert angeben wird (in einem vorgegebenen Intervall). Und dann daraus die absolute/ prozent. Abweichung berechnen und ebenfalls in dieser Legende darstellen.

Habe leider keine große Ahnung über MatLab, würde mich deshalb freuen wenn mir jemand helfen könnte, wie ich dies programmieren könnte.

Schon mal danke dafür.....

        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 18:42 Mi 08.11.2006
Autor: Martin243

Hallo,

um eine Legende zu erstellen, benötigst du den Befehl "legend". Dem übergibst du beliebig viele Strings und damit hat es sich.

Für die Umwandlung von Zahlen in Strings gibt es mehrere Möglichkeiten. Hier bietet sich "sprintf" an.

Zur Minimumssuche über zwei Variablen kannst du "fminsearch" benutzen. So etwas wie "fmaxsearch" gibt es nicht, aber dafür kann man wieder "fminsearch" benutzen, wenn man seine Funktion negiert.


Wenn du eine Abweichung berechnen willst, fragt sich natürlich: Was soll wovon abweichen?

Außerdem: Hast du bereits fertige Datenpunkte vorliegen oder gehst du von einer Funktion aus?

Falls du noch Probleme hast, könntest du ja mal ein Beispiel für deine Daten posten und wie du sie plottest.


Gruß
Martin

Bezug
                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 08:22 Do 09.11.2006
Autor: CAS

Danke erstmal für die schnelle Antwort....

also die Werte liegen als Funktion da :

Z= ((2*(X.^4))+(4*(X.^3))-(8*(X.^2))-(7*X)+ 90)+((2*(Y.^4))+(4*(Y.^3))-(8*(Y.^2))-(7*Y)+ 90)
(ähnliche Funktion)

und die Abweichung bezieht sich dann quasi vom maximalsten Punkt (100%) zum minimalsten Punkt eines Intervalls.

Ausplotten tu ich das ganz normal mit "surf".....

Bezug
                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 23:30 Do 09.11.2006
Autor: Martin243

Hallo,

ich denke, es ist doch am einfachsten, einfach innerhalb eines Netzgitters zu suchen, das du zwischen deine Intervallgrenzen spannst. Wenn es fein genug ist, dann sollte die Genauigkeit reichen.

Also denke ich mir mal ein paar Grenzen aus:
X0=-3; X1=2; Y0=-4; Y1=3;

Wir definieren unser Gitter:
[X,Y]=meshgrid(X0 : 0.1 : X1 , Y0 : 0.1 : Y1);

Nun suchen wir das Minimum:
[Zmin, ZminYindex] = min(Z);
[Zmin,ZminXindex] = min(Zmin);
ZminYindex = ZminYindex(ZminXindex);

Das Minimum ist nun in Zmin gespeichert. Wir bestimmen noch die Koordinaten dieses Punktes:
Xmin = X(ZminYindex , ZminXindex);
Ymin = Y(ZminYindex , ZminXindex);


Entsprechend suchen wir das Maximum. Ersetze jedes min einfach durch max...


Die Ausgabe als Legende kann so erfolgen:
legend1 = sprintf('Min: (%-5.2f,%-5.2f,%-5.2f)', [Xmin Ymin Zmin]);
legend2 = sprintf('Max: (%-5.2f,%-5.2f,%-5.2f)', [Xmax Ymax Zmax]);[/

surf(Z);
hold on;
legend(legend1,legend2);


Schau dir mal die Hilfe zu sprintf und legend an. Dort gibt es weitere Formatierungsmöglichkeiten.
In diesem Sinne kannst du nun zu deinen Zmin und Zmax die Kennzahlen ausrechnen, die du erwähnt hast und als legend3 und legend4 mit in die Legende aufnehmen.


Gruß
Martin

Bezug
                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:21 Fr 10.11.2006
Autor: CAS

Ich danke dir erstmal - hast mir unheimlich geholfen ;-)

Hab jetzt noch eine Frage zu der Funktion.

Muss diese Z-Funktion x-mal überlagern (nebeneinander in einem gleichmäßigen Abstand zueinander) , dabei soll aber der äußere Grenzbereich "abgeschnitten" werden, bzw. begrenzt werden (quasi in einem Intervall von [-(X+A),(X+A);-(-Y+B),(Y+B)]) .... hoffe du verstehst wie ich es meine.....
Kann man den Bereich für jede einzelne Funktion individuell begrenzen? bzw. eine Funktion schreiben, so dass man nur mit einem Bereich der Funktion rechnet....

LG


Bezug
                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 15:17 Fr 10.11.2006
Autor: Martin243

Hallo,

mir ist nicht ganz klar, worauf du hinaus willst, aber du kannst ja die Funktion zuerst für ein Rechteck ausrechnen.
Dann erzeugst du dir eine Matrix mask von derselben Größe wie Z, die an den Rändern Nullen und in der Mitte Einsen hat. Die legst du dann über Z:

Zmask = Z.*mask;

Nun kannst du mit "repmat" deine Matrix vervielfältigen, z.B.:
[code]bigZmask = repmat(Zmask, 5, 5);[code]


Hilft dir das weiter?


Gruß
Martin

Bezug
                                                
Bezug
Ausgabe der max./min. Werte: Mittelung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 07:49 Mi 15.11.2006
Autor: CAS

Habe das Problem jetzt anders gelöst ;-) .... habe einfach die Funktion geändert und nach der Gaußverteilung verarbeitet, da brauch ich die Intervallgrenzen nicht zu beachten, bzw. die Funktion einzugrenzen ;-)..

Danke nochmal dafür... und meine nächste Frage kommt sicherlich *G*

Bezug
                                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 07:45 Di 05.12.2006
Autor: CAS

Hallo ;-)

Hab jetzt doch noch mal eine Frage dazu....
also die Grafik wird ausgeplottet und die Min/Max- Werte in einer Legende gargestellt, jedoch werden bloß die Intervallgrenzen , wo man die Max/Min.- werte sucht [X0 X1 Y0 Y1] , gezeigt....
Gibt es eine Möglichkeit den ganzen Körper darzustellen und trotzdem nur einen Bereich auszuwählen, wo man die Max/Min.-werte sucht? (Habe die 1. Möglichkeit dieser Anwort für mein Programm ausgewählt...)

Danke schonmal.....



Bezug
                                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 09:03 Di 05.12.2006
Autor: Martin243

Hallo,

das habe ich nicht ganz verstanden: Was haben das Bestimmen der Extremwerte und das Plotten miteinander zu tun? Das kannst du doch völlig unabhängig voneinander machen. Zuerst Extremwerte in den eingeschränkten Intervallen suchen, dann komplett plotten mit den vorher gefundenen Werten in der Legende.
Falls ich das völlig missverstehe, wäre etwas Programmcode ziemlich hilfreich.


Gruß
Martin

Bezug
                                                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 09:57 Di 05.12.2006
Autor: CAS

Tut mir ja leid dass ich dich immer so nerve.... :-/

hab dir das Programm mal mitgeschickt und dort auch meine Probleme noch mal detailiert aufgeschrieben..... hoffe du kannst damit was anfangen und mir helfen .....

LG Kathi

[a][Dateianhang Nr. 1 (fehlt/gelöscht)]

Bezug
                                                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 11:11 Di 05.12.2006
Autor: Martin243

Hallo,

zuerst eine Bitte: Schicke bitte alle Beitrage mit Fragen und/oder Hilfegesuchen als Fragen, da ich (vielleicht auch andere) manchmal nur auf die Farbe achte. Fragen werden rot markiert und fallen (mir) mehr auf.

Zu deinen Fragen:
Ich habe mir erlaubt, deinen Programmcode zu bearbeiten. Die Berechnungen habe ich mir gar nicht erst angesehen (ich weiss ja gar nicht, was das sein soll...). Aber die wichtigsten Aenderungen:
Ich habe die Berechnungen in eine for-Schleife gepackt, in der beim ersten Durchlauf die minmax-Berechnungen durchgefuehrt werden und beim zweiten Durchlauf die Werte fuer den Plot berechnet werden.

Legend- und  Achsenproblem sind (hoffentlich in deinem Sinne) auch geloest. Lies dir einfach meine Kommentare zum [a]Code durch.
Ach ja: Da das Plotten des gesamten Bereichs jetzt klappt, kannst du es ja mal ohne Setzen der Achsen versuchen. Das geschieht ja automatisch.


Gruss
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: m) [nicht öffentlich]
Bezug
                                                                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 09:56 Fr 08.12.2006
Autor: CAS

***********************************************************

so jetzt hoffentlich die letzte Frage dazu ;-).....

Das Programm:

ein Wert T wird eingelesen

man hat 3 Funktionen,  mit (X,Y) und einer Variablen A, die wir zu einer addieren W(X,Y)

in Abhängigkeit von T suchen wir jetzt das optimale A ( oder einen Bereich:, 0<A<50))

Jetzt meine Frage:

Gibt es dazu geeignete Matlabfunktionen, die gleich Funktionen umstellen und die Werte berechnen oder soll man lieber das A in eine Schleife durchlaufen lassen, und dann den Bereich ausgeben lassen ?



Liebe Grüße

Hier noch mal der Code ;-)
[a][Dateianhang Nr. 1 (fehlt/gelöscht)]



Bezug
                                                                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 12:16 Fr 08.12.2006
Autor: Martin243

Hallo,

ja so etwas gibt es.
Es gibt z.B. fminbnd. Hier erzeugt man eine Inline-Funktion, indem man die Funktion als String hinschreibt.
Aaaaber: Die Funktion T ist ja über Wmax und Wmin definiert, die wiederum über W defniert sind, die wiederum über Z1, Z2 und Z3 defniert ist, die wiederum je drei vektorwertige Parameter haben. Deshalb wäre es höchst komplex, das als Inline-Funktion aufzubauen, da diese ganzen Funktionen ja nicht symbolisch behandelt werden sondern numerisch.

Also würde ich persönlich zu einer for-Schleife tendieren.


Gruß
Martin


Bezug
                                                                                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:08 Mo 11.12.2006
Autor: CAS

hallo nochmal....

hab das probiert mit einer for-schleife nach dem Schema, der vorangegangenen Beispielen, nur leider gibt das Programm mir entweder gar keinen wert aus oder unzählige Tabellen.....

Wahrscheinlich ist irgendwas an dem Programmfluss nicht richtig..... hab das Programm noch mal mitgeschickt.....

Könnte es mal jemand durchsehen/ kontrollieren, bzw. verbessern???

Ich bedanke mich für eure Hilfe

LG Kathi

[a][Dateianhang Nr. 1 (fehlt/gelöscht)]



Bezug
                                                                                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 12:40 Mo 11.12.2006
Autor: Martin243

Hallo,

ich habe mir die Berechnung nicht angesehen, da hat sich ja nix verändert. Aber aufgefallen ist mir, dass du in beiden Durchläufen (lauf==1 und lauf==2) dasselbe berechnest. Das solltest du vielleicht noch optimieren...

Zur Ausgabe:
Das sprintf dient nicht direkt der Ausgabe sondern der Umwandlung von Ausdrücken in einen String. Deswegen führt ein Semikolon dahinter zur Unterdrückung der Ausgabe. Wenn das Semikolon fehlt, dann geht es schon, sieht aber hässlich aus, weil dort immer ein "ans" davorsteht.

Mein Vorschlag:
if Wopt<= Toleranz, 
   antwort=sprintf('Toleranz: %-5.2f%% \n Abstand: %-5.2f \n', [Wopt, A]);
   disp(antwort);
end;

Ach ja: Bei input solltest du am Ende der Eingabeaufforderung mindestens ein Leerzeichen einfügen. Sieht besser aus.


Gruß
Martin

Bezug
                                                                                                                
Bezug
Ausgabe der max./min. Werte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:15 Mi 10.01.2007
Autor: CAS

Hallo....

der Mittelwert wird doch bestimmt durch die Funktion :

M = mean(W);

Wenn ich das so in meinem Programm aufnehme, plottet er mir in meiner Legende viele Mittelwerte aus. Wie kann ich den Mittelwert über einer Fläche bestimmen?....
(hab das auch mit der Schreibweise wie bei Max/Min schon versucht, doch da kommt leider gleich Error!)

Hilfe bitte benötigt ;-)

[a]Datei-Anhang

Dateianhänge:
Anhang Nr. 1 (Typ: m) [nicht öffentlich]
Bezug
                                                                                                                        
Bezug
Ausgabe der max./min. Werte: Antwort
Status: (Antwort) fertig Status 
Datum: 17:00 Mi 10.01.2007
Autor: Martin243

Hallo,

eigentlich sollte ein mean(mean(W)) reichen. Dadurch wird entlang beider Dimensionen gerechnet.
Alternativ kannst du auch mean(reshape(W,numel(W),1)) benutzen.

Übrigens musst du um die Zahlenformate bei sprintf keine Klammern machen, oder war das Absicht?



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]