[lecture] scripts functions
This commit is contained in:
parent
500b829e54
commit
681cc84995
@ -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}
|
||||
|
Reference in New Issue
Block a user