105.12.2014Übung 4 - mdmt methoden der medizintechnik Übung zur vorlesung [email protected]...
TRANSCRIPT
105.12.2014Übung 4 - MdMT
Methoden der MedizintechnikÜbung zur Vorlesung
[email protected]@ovgu.de
Folge 4 – Signale verarbeiten IAudiodaten einlesen + verändern
205.12.2014Übung 4 - MdMT
1. Wiederholung: Funktionen mit Rückgabewert
2. Neues Werkzeug: Funktionen mit mehreren Eingabewerten
3. Audiodaten in Matlab einlesen und verändern
4. Übungsaufgaben
Inhalte und Ziele der Übung
305.12.2014Übung 4 - MdMT
Ein gutes Matlab-Tutorial, sehr viel ausführlicher als unsere Übung:
http://staff.technikum-wien.at/~teschl/MatlabSkriptum.pdf
Oder auch:
http://www.tutorialspoint.com/matlab/matlab_functions.htm
Und:
http://ctms.engin.umich.edu/CTMS/index.php?aux=Basics_Matlab
… noch viel viel mehr!
0. Literaturhinweis
405.12.2014Übung 4 - MdMT
Wie verwendet man Funktionen in Matlab?
• Matlab hat viele Funktionen schon eingebaut, z.B.
y = sin(3); % berechnet den Sinus des Eingabewertes 3 % und packt ihn in die Variable mit dem % Namen y
• Haben also einen Namen (um sie aufzurufen und zu erahnen, was sie tun)
• Berechnen uns einen Rückgabewert (hier: der Sinus von 3) in Abhängigkeit eines Eingabewertes (hier: 3)
• Lassen sich von überall - z.B. im Command Window (unten) - aufrufen
Wiederholung: Funktionen mit Rückgabewert
505.12.2014Übung 4 - MdMT
Wie verwendet man Funktionen in Matlab? (forts.)
• Funktionen kann man verschachteln und genau wie Variablen verwenden! • Man kann selbst neue Funktionen anlegen, die Matlab ergänzen
(vgl. letzte Übung und nächste Folie)
• Und: Man kann dann die eigenen Funktionen genau wie die fertigen verwenden!
• Beispiele (Command Window):
p = sin(3);q = sin(cos(3)); % verschachtelter Aufrufr = meineFunktion(cos(3));s = cos(meineFunktion(3));
t = 3 + 4;u = meineEigeneFunktion(t); % u == meineFunktion(7)
Wiederholung: Funktionen mit Rückgabewert
605.12.2014Übung 4 - MdMT
Wie erstellt man eigene Funktionen, die man z.B. im Command Window (=„Konsole“) aufrufen kann?
• Neue Datei erstellen, die so heißt, wie die eigene Funktion (z.B. meineNegativfunktion.m) – hier kommt dann die Funktion in der besprochenen Form hinein:
• Benutzung dann im Command Window wie normale Matlab-Funktionen, z.B.
Freiwillige Hausaufgabe: Nachbauen und damit ausrechnen: Wie groß ist z?
Wiederholung: Funktionen mit Rückgabewert
function [rueck] = meineNegativFunktion(ein) rueck = -1 * ein;end
y = meineNegativfunktion(10); % y == -10z = 2 + meineNegativfunktion(y) * meineNegativFunktion(4)
705.12.2014Übung 4 - MdMT
• Bisher: ein Eingabewert – z.B. y = sin(x).
• Matlab hat auch Funktionen mit mehreren Eingabwerten eingebaut, z.B:
• Auch solche Funktionen können wir selbst erstellen (Datei meineMult.m):
• Aufruf im Commandwindow z.B.:
Freiwillige Hausaufgabe: meineMult so erweitern, dass sie 4 Eingabewerte akzeptiert und multipliziert. Zusatzaufgabe dieser Übung: meineMult so umbauen, dass
beliebig viele Zahlen miteinander multipliziert werden können. Nur * ist als
Multiplikations-Operation erlaubt!
Neu: Funktionen mit mehreren Eingabewerten
function [r] = meineMult(eingabeA, eingabeB) r = eingabeA * eingabeB;end
s = plus(a,b); % dasselbe wie s = a + bt = plus(10,5); % t == 15
u = meineMult(321,123) % dasselbe wie u = 321 * 123
805.12.2014Übung 4 - MdMT
Audio in Matlab
• Audiodaten haben zwei Dimensionen: 1. Zeit – x-Achse 2. „Luftdruck “ (oder: „Lautsprechermembranauslenkung“
oder: „Amplitude“)
• Luftdruckschwankung / Amplitude: Je größer, desto lauter:
• Vertiefte Behandlung in der Vorlesung
905.12.2014Übung 4 - MdMT
Audio in Matlab
• Audiodaten haben zwei Dimensionen: 1. Zeit – x-Achse 2. „Luftdruck “ (oder: „Lautsprechermembranauslenkung“
oder: „Amplitude“)
• Luftdruckschwankung / Amplitude: Je größer, desto lauter:
• Vertiefte Behandlung in der Vorlesung
1005.12.2014Übung 4 - MdMT
Wie sehen die Daten zu den Diagrammen in Matlab aus?
• Im simpelsten Fall: Eine lange Liste aus (tausenden!) einzelnen Amplituden hintereinandergereiht:
Verständnisfrage: Welches Signal ist lauter - audio_a oder audio_b?
Audio in Matlab
audio_a = [0.7, 0.8, 0.9, 0.5, 0.1, -0.4, -0.8, ...];
audio_b = [0.35, 0.4, 0.45, 0.25, 0.05, -0.2, -0.4, ...];
Zeit
1105.12.2014Übung 4 - MdMT
Wie bekomme ich „echte“ Audiodaten in Matlab hinein, so dass sie so: ...
... vorliegen? Ganz einfach – in der Konsole:
Und wie kann man davon die Amplitude / Lautstärke ändern?
Audio in Matlab
audio_a = [0.7, 0.8, 0.9, 0.5, 0.1, -0.4, -0.8, ...];
audio_a = wavread(‘dateiname.wav‘); % Einlesen aus Datei –% Datei muss im % aktuellem Ordner liegen!
plot(audio_a); % Diagramm ausgeben
audio_b = audio_a * 0.5; % Lautstärke auf 50%plot(audio_b) % reduziert in audio_b!
1205.12.2014Übung 4 - MdMT
Übungsaufgaben: Eine eigene Audio-Funktion!1. Schreibe eine eigene Funktion myVolume(datei, lautstaerke), mit der sich eine Audiodatei einlesen lässt und die den Inhalt der Datei mit geänderter Lautstärke zurückgibt.
Die Funktion soll sich wie folgt in der Konsole aufrufen lassen:
y = myVolume(‘dateiname.wav‘,50); % y enthält dann die % Audiodaten mit
halber % Lautstärke
2. Plotte den Rückgabewert deiner Funktion, wenn du sie mit den Parametern ‘Apollo13.wav‘ und mit einem Lautstärkewert von 25% aufrufst.
3. Gib die Daten als Datei aus – dazu in der Konsole eingeben: wavwrite(y, 44100,‘Appollo13_leise.wav‘);
Zusatzaufgabe: Erweitere die Funktion meineMult von Folie 7 so, dass beliebig viele Zahlen miteinander multipliziert werden können. Nur * ist als Multiplikations-Operation erlaubt!