diff --git a/programming/lectures/scripts_functions.tex b/programming/lectures/scripts_functions.tex index 2e230bb..2ea61d4 100644 --- a/programming/lectures/scripts_functions.tex +++ b/programming/lectures/scripts_functions.tex @@ -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}