Funktion mehrere Variablen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:51 Do 05.03.2015 | Autor: | stevinho |
Aufgabe | Gegeben ist eine Funktion abhängig von 3 variablen :
f( x , mü , theta) = 1/sqrt (2pi*theta) * exp ( ( [mm] x-mü)^2 /2*theta^2)
[/mm]
Dabei soll x ein vektor und mü bzw theta skalare sein
Die funktion soll die nummer der eingegebenen variablen checken und error ausgeben falls was nicht stimmt
Dazu soll wenn für x nur eine zahl eingegeben wir angenommen werden, dass mü =0 & theta=1
Wenn für x 2 zahlen eingegeben werden soll theta=1 sein |
Hallo alle zusammen,
Ich bin relativ neu bei matlab und lerne das programm grade auf einer englischsprachigen universität, was es nicht grade einfacher macht das programm zu verstehen.
Wie oben bereits beschrieben soll eine funktion entwickelt werden. Da ich leider nur" die basics" dsr funktionen erstellung habe komme ich nicht wirklich weiter mit den ganzen zusätzlichenen bedingungen.
Bisher bin ich soweit alle varriablen einlesen zu können doch die weiteren bedingungen fallen mit etwas schwer:
function [ dist ] = NormDist(x, mü, theta)
x=zeros(1,100)
cnt=0
while 1
Cnt=cnt+1
x(cnt)=input('......')
if x= ; %kann man diese bedingung so schreiben?
break
end
x=(1:cnt)
mü= input('......')
theta=input'......')
Ich hoffe alles ist soweit verständlich und ich bedanke mich schonmal für eure hilfe!
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Mit besten grüßen,
Stevinho
|
|
|
|
> Gegeben ist eine Funktion abhängig von 3 variablen :
> f( x , mü , theta) = 1/sqrt (2pi*theta) * exp ( (
> [mm]x-mü)^2 /2*theta^2)[/mm]
> Dabei soll x ein vektor und mü bzw
> theta skalare sein
Hallo stevinho und herzlich
Obwohl es bei deiner Frage nicht wirklich um den
Funktionsterm von f selber geht, vermute ich, dass du
ihn wohl nicht ganz genau wiedergegeben hast.
Es sollte wohl die Dichtefunktion der Normalverteilung
sein, die man üblicherweise so notiert:
[mm] $\frac{1}{\sqrt{2\pi\sigma^2}}\operatorname{exp}\left\{-\frac{\left(x-\mu\right)^2}{2\sigma^2}\right\}$
[/mm]
Ich denke, dass du oben etwas verwechselt hast bzw. x in zwei
unterschiedlichen Bedeutungen verwendest. Das "eigentliche" x
der Dichteformel ist ein Skalar, kein Vektor. (Oder aber:
Falls x wirklich auch ein Vektor sein sollte, müsste auch
[mm] \mu [/mm] einer sein)
> Die Funktion soll die nummer ("number" = Anzahl) der
> eingegebenen Variablen checken und Error ausgeben falls
> was nicht stimmt.
> Dazu soll wenn für x nur eine Zahl eingegeben wird
> angenommen werden, dass mü =0 & theta=1
Jetzt meinst du mit x eigentlich den "Vektor", der aus den
sämtlichen Eingabeparametern besteht. Ich bezeichne diesen
gesamten Eingabevektor nun lieber mit einem großen "X".
Hat X nur eine einzige Komponente [mm] X_1 [/mm] , so soll dies das x
sein und dann [mm] \mu=0 [/mm] und [mm] \sigma=1 [/mm] . Hat X zwei Kompo-
nenten, so soll [mm] x:=X_1 [/mm] und [mm] \mu:=X_2 [/mm] und [mm] \sigma:=1 [/mm] sein.
Hat X die vollen (und maximal erlaubten) 3 Komponenten,
so sei $\ [mm] x:=X_1$ [/mm] , $\ [mm] \mu:=X_2$ [/mm] , $\ [mm] \sigma:=X_3$ [/mm] .
> Wenn für x 2 zahlen eingegeben werden soll theta=1 sein
> Hallo alle zusammen,
> Ich bin relativ neu bei matlab und lerne das programm
> grade auf einer englischsprachigen universität, was es
> nicht grade einfacher macht das programm zu verstehen.
Ich arbeite momentan gar nicht mit Matlab, versuche aber
trotzdem mal, grundsätzliche Tipps zu geben.
Ich würde so anfangen, dass ich den Variablen [mm] \mu [/mm] und [mm] \sigma
[/mm]
zuerst die Standardwerte (default values) [mm] \mu:=0 [/mm] , [mm] \sigma:=1
[/mm]
zuordne. Dann wird der Inputvektor X (mit zunächst beliebig
vielen Komponenten) eingelesen. Von diesem wird dann die
Dimension n (Anzahl der Komponenten) bestimmt. Falls n=0
oder n>3 , wird eine Fehlermeldung ausgegeben und die
Rechnung abgebrochen. Andernfalls wird dann für die
Werte i:= 1 .. n die Zuordnung gemacht: [mm] x:=X_1 [/mm] und
dann (eventuell) [mm] \mu:=X_2 [/mm] , [mm] \sigma:=X_3 [/mm] .
> Wie oben bereits beschrieben soll eine Funktion entwickelt
> werden. Da ich leider nur" die basics" der Funktionen-
> erstellung habe, komme ich nicht wirklich weiter mit den
> ganzen zusätzlichenen Bedingungen.
>
> Bisher bin ich soweit alle Variablen einlesen zu können
> doch die weiteren Bedingungen fallen mit etwas schwer:
>
> function [ dist ] = NormDist(x, mü, theta)
> x=zeros(1,100)
> cnt=0
> while 1
> Cnt=cnt+1
> x(cnt)=input('......')
> if x= ; %kann man diese bedingung so schreiben?
> break
> end
> x=(1:cnt)
>
> mü= input('......')
> theta=input'......')
Sorry, dass ich bei den Matlab-spezifischen Dingen im
Moment nicht helfen kann ...
Eventuell werde ich trotzdem versuchen, einen kleinen Entwurf
zu machen. Übrigens gibt es in Matlab die Möglichkeit,
Funktionen zu definieren, deren Argumentliste eine
variable Größe haben darf. Schau mal unter dem Stichwort
"Matlab varargin"
LG , Al-Chwarizmi
LG , Al-Chwarizmi
|
|
|
|