[lecture] scripts functions

This commit is contained in:
Jan Grewe 2015-10-13 18:29:25 +02:00
parent 500b829e54
commit 681cc84995

View File

@ -176,15 +176,15 @@
Beispiel: Plot von Sinusschwingungen
\footnotesize
\begin{lstlisting}
>> x = (0:0.01:2*pi);
>> frequenz_1 = 1;
>> frequenz_2 = 2;
>> y = sin(frequenz_1 * x);
>> y2 = sin(frequenz_2 * x);
>> plot(x, y);
>> hold on;
>> plot(x, y2);
\end{lstlisting}
t = (0:0.01:10); %s
frequenz_1 = 1;
frequenz_2 = 2;
y = sin(frequenz_1 * t * 2 * pi);
y2 = sin(frequenz_2 * t * 2 * pi);
plot(t, y);
hold on;
plot(t, y2);
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
@ -194,7 +194,7 @@
\item \"Offnet den Editor und schreibt ein Skript, das vier Sinus
mit den Amplituden \code{amplitudes = [0.25, 0.5, 1.0, 2.0]} und
der Frequenz 2\,Hz in einen Graphen plottet (\code{sinus = sin(x *
frequency)* amplitude;}). Benutzt eine \verb+for+ Schleife um
frequency * 2 * pi)* amplitude;}). Benutzt eine \verb+for+ Schleife um
die Amplituden abzuarbeiten (\verb+hold on+ um Linien
\"ubereinander zu plotten).
\item Speichert das Skript und f\"uhrt es von der Kommandozeile aus.
@ -279,13 +279,13 @@ end
\footnotesize
\begin{lstlisting}
function meine_erste_funktion() % Funktionskopf
x = (0:0.01:2*pi); % hier faengt der Funktionskoerper an
t = (0:0.01:2); % hier faengt der Funktionskoerper an
frequenz = 1.0;
amplituden = [0.25 0.5 0.75 1.0 1.25];
for i = 1:length(amplituden)
y = sin(frequenz * x) * amplituden(i);
plot(x, y)
y = sin(frequenz * t * 2 * pi) * amplituden(i);
plot(t, y)
hold on;
end
\end{lstlisting}
@ -300,13 +300,13 @@ function meine_erste_funktion() % Funktionskopf
\tiny
\begin{lstlisting}
function meine_erste_funktion()
x = (0:0.01:2*pi);
t = (0:0.01:2);
frequenz = 1.0;
amplituden = [0.25 0.5 0.75 1.0 1.25];
for i = 1:length(amplituden)
y = sin(frequenz * x) * amplituden(i);
plot(x, y)
y = sin(frequenz * t * 2 * pi) * amplituden(i);
plot(t, y)
hold on;
end
\end{lstlisting}
@ -361,10 +361,10 @@ Probleme mit dieser Funktion:
\tiny
\begin{lstlisting}
function meine_erste_funktion()
x = (0:0.01:2*pi);
t = (0:0.01:2);
frequenz = 1.0;
amplituden = 1.0 1.25;
y = sin(frequenz * x) * amplitude;
y = sin(frequenz * t * 2 * pi) * amplitude;
end
\end{lstlisting}
\normalsize
@ -374,7 +374,7 @@ end
Welche Information muss ich ihr geben?\pause
\begin{itemize}
\item Funktion muss wissen: Wie weit soll gerechnet werden? Welche
Aufl\"osung auf der x-Achse? Welche Frequenz? Welche Amplitude?
Aufl\"osung auf der Zeitachse? Welche Frequenz? Welche Amplitude?
\item F\"ur einen Plot brauche ich die x- und die y-Werte. Diese
muss die Funktion zur\"uckgeben.
\end{itemize}
@ -388,10 +388,10 @@ end
\footnotesize
\begin{lstlisting}
function calculate_sinewave()
x = (0:0.01:2*pi);
t = (0:0.01:2);
frequenz = 1.0;
amplituden = [0.25 0.5 0.75 1.0 1.25];
y = sin(frequenz * x) * amplituden(i);
y = sin(frequenz * t * 2 *pi) * amplituden(i);
end
\end{lstlisting}
\normalsize
@ -403,9 +403,9 @@ end
Argumente:
\footnotesize
\begin{lstlisting}
function calculate_sinewave(frequency, amplitude, x_max, x_step)
x = (0:x_step:x_max);
y = sin(frequency * x) * amplitude;
function calculate_sinewave(frequency, amplitude, t_max, t_step)
x = (0:t_step:t_max);
y = sin(frequency * t * 2 * pi) * amplitude;
end
\end{lstlisting}
\normalsize
@ -417,9 +417,9 @@ end
R\"uckgabewerte:
\tiny
\begin{lstlisting}
function [x, y] = calculate_sinewave(frequency, amplitude, x_max, x_step)
x = (0:x_step:x_max);
y = sin(frequency * x) * amplitude;
function [t, y] = calculate_sinewave(frequency, amplitude, t_max, t_step)
x = (0:t_step:t_max);
y = sin(frequency * t * 2 * pi) * amplitude;
end
\end{lstlisting}
\end{frame}
@ -435,7 +435,7 @@ end
\item Schnittstelle definieren: Was will ich von der Funktion?
Welche Information muss ich ihr geben?\pause
\begin{itemize}
\item Funktion muss wissen: Welche Daten soll sie plotten? X-Werte,
\item Funktion muss wissen: Welche Daten soll sie plotten? Zeitachse,
y-Werte, einen Namen f\"ur die Legende?
\item Muss nichts zur\"uckgeben.
\end{itemize}
@ -475,15 +475,15 @@ end
\begin{lstlisting}
amplitudes = 0.25:0.25:1.25;
frequency = 2;
x_max = 10 * pi;
x_step = 0.01;
t_max = 10;
t_step = 0.01;
figure()
hold on
for a = amplitudes
name = num2str(a);
[x_data, y_data] = calculate_sinewave(frequency, a, x_max, x_step);
[x_data, y_data] = calculate_sinewave(frequency, a, t_max, t_step);
plot_sinewave(x_data, y_data, name)
end
legend('show')
@ -607,26 +607,6 @@ legend('show')
\end{frame}
\begin{frame}[fragile]
\frametitle{Vom Problem zum Algorithmus}
\frametitle{\"Ubungen - Funktionen}
\begin{enumerate}
\item Schreibe eine Funktion \verb+plotSineWave+ die die Amplitude
des Sinus als Argument entgegennimmt.
\item Erweitere die Funktion in der Weise, dass sie zus\"atzlich die
gew\"unschte Frequenz \"ubernimmt.
\item Erweitere \verb+plotSineWave+ so, dass sie eine Schar von
Sinuswellen unterschiedlicher Frequenz plottet.
\item Erweitere \verb+plotSineWave+ so, dass auch die Amplitude als
Vektor \"ubergeben werden kann. Die Funktion soll alle m\"oglichen
Kombinationen darstellen.
\item Erweitere \verb+plotSineWave+ so, dass die berechnete Sinus in
einer 2-D Matrize zur\"uckgegeben werden.
\item F\"uge zwei weitere R\"uckgabeparameter hinzu, die f\"ur jede
Berechnung die Amplitude und Frequenz zur\"uckgeben.
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Vom Problem zum Algorithmus}