12
1 05.12.2014 Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung [email protected] [email protected] Folge 4 – Signale verarbeiten I Audiodaten einlesen + verändern

105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung [email protected] [email protected] Folge 4 – Signale verarbeiten I Audiodaten einlesen

Embed Size (px)

Citation preview

Page 1: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

105.12.2014Übung 4 - MdMT

Methoden der MedizintechnikÜbung zur Vorlesung

[email protected]@ovgu.de

Folge 4 – Signale verarbeiten IAudiodaten einlesen + verändern

Page 2: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 3: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 4: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 5: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 6: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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)

Page 7: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 8: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 9: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 10: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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

Page 11: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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!

Page 12: 105.12.2014Übung 4 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de glasser@ovgu.de Folge 4 – Signale verarbeiten I Audiodaten einlesen

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!