Forum: Digitale Signalverarbeitung / DSP / Machine Learning Elegante Lösung möglich?


von Gast (Gast)


Lesenswert?

Hi,

ich bin gerade etwas am Matlab programmieren und bin mir nicht sicher, 
ob es nicht eine elegantere Lösung gibt, als ich sie verwende.

Wenn ich eine Funktion nehme, z.B. f = 1 / x, und diese plotten möchte, 
sieht das bei mir folgendermaßen aus:

%**************************************************
st = linspace(-5,5,20);        %Stützstellenvektor
f = zeros(0,length(st);        %Nullvektor

for k = 1:1:length(st)
   f(k) = 1 / st(k);
end

plot(st,f);
%**************************************************


Was mich daran stört, ist die for-Schleife. Gibt es da etwas 
eleganteres?
Ich frage, da man ja bei Matlab immer schön Vektoroperationen nutzen 
soll, da diese schneller sind, allerdings fällt mir keine Operation ein.

Grüße;
P

von Justus S. (jussa)


Lesenswert?

st = linspace(-5,5,20);
f = 1./st;

von Gast (Gast)


Lesenswert?

ah... genau, vielen Dank, an sowas habe ich gedacht.

aber gibt es das auch für f = 1 / (1 + x) ?

von Karl (Gast)


Lesenswert?

Troll?
Falls nicht: RTFM. Sorry, aber das steht alles im "getting started".

von Justus S. (jussa)


Lesenswert?

Karl wrote:

> Falls nicht: RTFM.

jap...wobei ich auch den Unterschied zwischen erster und zweiter Frage 
nicht sehe...

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Gast wrote:
> ah... genau, vielen Dank, an sowas habe ich gedacht.
>
> aber gibt es das auch für f = 1 / (1 + x) ?

Man hält es nicht für möglich: Ja! Und zwar mit

 st = linspace(-5,5,20);
 f = 1./(1+st);

oder noch knackiger mit

 f = 1 ./ (1 + (-5:(10/(20-1)):5));

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.