Zum Forum springen
Benachrichtigungen
Alles löschen

Matlab Frage

3 Beiträge
2 Benutzer
0 Reactions
651 Ansichten
Sleyde
Beigetreten: 15.01.2005

Ich habe eine Funktion progammiert, nennen wir sie z(h). Wenn ich jetzt z.B. in matlab z(1) eintippe, wird h=1 gesetzt obv und ich kriege in meinem Fall einen Nx1 Spaltenvektor als Resultat. Jetzt würde ich gerne auf das k-te Element dieses Nx1 Spaltenvektors zugreifen, also quasi z(1)(k) ... howto? hier mein (unvollständiger) Code:

function r=kernreg2(x,y,h,N)

kerf=@(z,h) exp(-z.^2/(2*h^2))/(h*sqrt(2*pi));

xgrid=linspace(min(x),max(x),N);

for k=1:N
z=@(h) kerf(xgrid(k)-x,h);
w{k,1}=@(h) N * z(h)/sum(z(h));
m{k,1}=@(h) 1/N* (sum(w{k,1}(h).*y) - w{k,1}(h)(k)*Y(k,1));
end

Es geht um die letzte Zeile im for loop, das w{k,1}(h)(k). Das Program soll später dazu dienen, eine Kernel Regression durchzuführen, bei der der Bandbreite parameter h durch eine sogenannte Cross-Validiation Methode bestimmt wird, d.h. Minimierung einer Fehlerfunktion. Deswegen alle Funktionen als Funktion von h...

e: Ok, ich glaub ich hab's.. vllt schon bisschen spät. Kleiner Trick sollte es tun:

help=z(1)
help(k)

e2: Ne, geht so doch nicht. Habe ja leider kein z(1), sondern nur allgemein z(h). Und dann muss ich auch help als Funktion von h definieren, also help = @(h) ...

und dann ist das Problem wieder das alte.


Antwort
Zitat
2 Antworten
Sleyde Themenstarter
Sleyde
Beigetreten: 15.01.2005
sarc
Beigetreten: 06.06.2008

Danke! Dass es per einfacher Syntax nicht geht hatte ich durch viele Eigenversuche auch schon rausgefunden, die Idee mit den index-Funktionen ist aber gut, so weit hab ich nicht gedacht! :)


Antwort
Zitat
Teilen: