Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 4 – Signale verarbeiten I Audiodaten einlesen + verändern
Ü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
Übung 4 - MdMT Ein gutes Matlab-Tutorial, sehr viel ausführlicher als unsere Übung: Oder auch: Und: lab … noch viel viel mehr! 0. Literaturhinweis
Ü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
Ü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 Aufruf r = meineFunktion(cos(3)); s = cos(meineFunktion(3)); t = 3 + 4; u = meineEigeneFunktion(t); % u == meineFunktion(7) Wiederholung: Funktionen mit Rückgabewert
Ü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 == -10 z = 2 + meineNegativfunktion(y) * meineNegativFunktion(4)
Ü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 + b t = plus(10,5); % t == 15 u = meineMult(321,123) % dasselbe wie u = 321 * 123
Ü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
Ü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
Ü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
Ü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!
Ü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!